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 ответ

Решение

Эта модель называется инверсией контроля. Существует около миллиона контейнеров для инъекций зависимостей, решающих эту проблему, каждый из которых имеет свои положительные и отрицательные особенности. Выберите тот, который вам больше нравится, или бросьте свой, если ни один не соответствует вашим потребностям.

Другие вопросы по тегам