Dilma писал(а):
отправлять "наверх" информацию о том, какой именно интерфейс требуется от точки
Я тоже думал об этом. Смысл такой: у нас реализован механизм передачи любого типа между компонентами так, что верхняя точка может узнать тип поданных на неё данных при компиляции. И если она может принимать несколько типов данных, то для каждого может сгенерировать специфичный код. Нижняя же точка может выдавать несколько различных типов данных, и для того, чтобы узнать, какой тип она должна выдать, может и пригодиться, чтобы верхняя точка послала "вверх" перечень принимаемых типов, а нижняя точка приняля решение какой тип выдать. Но я так и не додумал этого. Просто в некоторых компонентах автор схемы сам с помощью свойства указывает какой тип ему нужен на выходе.
sаmakacd писал(а):
У нас в пакете живут как I/O streams
По поводу Stream. Вообще, хоть этот тип и очень распространен в коде, но чисто практически для автора схемы он может использоваться разве что для работы с файлами. А вот использовать в схеме механизм стрима для работы, например, с сетевым сокетом - вообще нет необходимости: в этом и даже в стандартном пакетах TCP клиент/сервер полностью скрывают его от автора схемы, тогда как в коде именно стримы и используются.
Массив байтов удобно использовать как универсальный тип для передачи любых данных между компонентами (как в стандартном пакете часто используется MemoryStream). Достаточно в каждом компоненте, где необходимо, реализовать его обработку. Та же передача RAW-данных через TCP.
Хотя при наличии достаточного инструментария в компонентах (работы с форматами файлов, сетевыми протоколами) его использование и ограничивается реализацией работы с пользовательскими типами файлов или протоколами.
В общем, при достаточно активном развитии пакета, система типов будет упрощаться самостоятельно: более нужные/незаменимые типы будут оставаться, остальные будут отбрасываться. Даже просто по мере "укрупнения" компонентов, когда реализация компонента будет подниматься с более примитивного уровня до более обобщенного.
Alex35567 писал(а):
точку File фактически может использовать только hFile
Я согласен, что можно отдать приоритет строковым путям перед объектом File. Тогда в соответствующую точку можно добавить определение поданого типа, и в случае строки самостоятельно создавать/освобождать File.