07.11.2015, 15:06 | #1 |
Участник
|
DAX2009 аналог friend классов. Как сделать?
В DAX2009 есть семейство классов, являющихся чем-то типа контрактов данных. В основе иерархии класс NodeContract. Сами эти классы хранят некоторые данные, доступ к которым производится при помощи методов parm*.
Сами эти классы-контракты не знают как получать данные, данными их заполняет другое семейство классов "создателей", в основе иерархии которых лежит класс NodeCreator. Эти классы создают и заполняют определенные NodeContract. NodeContract создаются фабрикой классов (пока это один статический метод в классе NodeContract, но, вполне возможно, что переделаю на какой-то класс фабрики, а возможно и на семейство классов-фабрик). То же самое по поводу создания относится к семейству NodeCreator*. Для тех, кто будет пользоваться семейством классов NodeContract* хотелось бы ограничить их создание только через использование семейства NodeCreator*. В C++ я бы мог установить модификаторы friend. В C# разделением по файлам, мог бы определить видимость фабрик классов. В DA2009 непонятно, как сделать так, чтобы классы NodeCreator* могли создавать экземпляры NodeContract*, но по другому их создать было бы нельзя (создать нельзя, использовать можно). Если фабрики классов NodeContract* сделать публичными, то их может вызвать любой внешний код. Если сделать защищенными, то NodeCreator* их не сможет использовать. Как сделать фабрики NodeContract* защищенными для всех, кроме NodeCreator*? Понятно, что можно просто описать особенности в какой-то документации, но хотелось бы это реализовать на уровне кода. Есть какие-то идеи? |
|