#c# #static #virtual
Вопрос:
Вероятно, мне здесь нужен шаблон проектирования: у меня есть фабрика, которая производит экземпляры по типу. Я хочу, чтобы пользователь мог выбрать тип, поэтому мне нужна подпись для типа, а затем список общего предка типов.
Теперь я хотел бы перечислить список и распечатать подписи. (Никто не может этого сделать, свойства статических подписей недоступны для предка)
Затем я хотел бы напечатать подпись экземпляра. Невозможно это сделать, так как свойства класса недоступны из экземпляра.
Если я использую словарь, который соединяет тип и заголовок, подписи снова недоступны ни для экземпляра, ни для типа и т. Д.
Я использую Delphi уже 20 лет и каждый день использую виртуальные конструкторы и свойства виртуальных классов. Мне вроде как нравится C#, но по прошествии многих лет у меня все еще нет удобного решения для таких вещей. (Заранее спасибо за помощь)
Ответ №1:
С помощью System.Reflection
вы можете перечислить все типы сборки, проверить, являются ли они производными от данного базового типа или реализуют определенный интерфейс. Вы также можете получить доступ к непубличным полям или свойствам (статическим или экземплярам). Так что, может быть, это и есть правильный путь.
Если иерархия классов-это ваш собственный код, вы также можете/должны просто немного изменить его, чтобы получить доступ к членам, которые теперь ограничены..