Здравствуйте, CyberRussia, Вы писали:
CR>Озвучили мне идею — написать классам атрибут с характерным уникальным значением. А фабрика, чтобы получить входным параметром значение искала класс с соответствующим атрибутом и создавала экземпляр объекта.
CR>Не могу найти решение как реализовать. Смотрел на Type.GetType, но там поиск по имени, а не по атрибуту. Циклически перебирать подходящие классы... наверное можно, но возможно существует лучшее решение?
Мы похожую задачу решили так. Сделали атрибут уровня сборки в котором в качестве параметра typeof(класс_который_надо_создать).
Преимущества — скорость загрузки. Читаются только метаданных глобальных атрибутов. Это очень быстро.
Например,
вот такой атрибут:
[assembly: ProjectSupport("Nitra C#", typeof(CSharp.CompilationUnit))]
экспортирует объект поддержки проекта для некоторого языка реализуемого на
NitraАвтор: VladD2
Дата: 12.01.17
.
Сам
атрибут.
А это код загрузки
атрибутов.
А
вот, код создания экземпляра.