C# Автосканирование завод
У меня есть какие-либо закономерности или внутренние решения для решения следующей проблемы:
У меня есть интерфейс ImyInterface(или некоторый baseClass) и атрибут myAttribute. Мне нужен класс фабрики, который предоставляет мне функциональность для поиска всех типов с пустым конструктором, наследуя ImyInterface и помеченный атрибутом myAttribute.
Я хочу искать в разных режимах: 1) типы поиска в текущей сборке 2) типы поиска во всех сборках решения 3) типы поиска в целевой библиотеке (.lib или.dll)
В результате я хочу увидеть что-то вроде этого:
Некоторые востребованные реализации типа:
[myAttribute(uniqueTypeNameOrSomethingLikeThat = "SuperClass")]
public class mySomeResource:ImyInterface
{
mySomeResource(){...}
}
Фабрика используя:
myResourceFactory factory = new myResourceFactory(typeof(ImyInterface), typeof(myAttribute));
factory.ScanThisAssembly();
factory.ScanDirrectory("C:\\libraries");
var atlast = (ImyInterface)factory.Create("SuperClass");
Я уже написал свое собственное решение, но я боюсь "изобретать велосипед".
есть какие-либо идеи / опыт по этой проблеме?
1 ответ
Эта модель называется инверсией контроля. Существует около миллиона контейнеров для инъекций зависимостей, решающих эту проблему, каждый из которых имеет свои положительные и отрицательные особенности. Выберите тот, который вам больше нравится, или бросьте свой, если ни один не соответствует вашим потребностям.