У меня есть несколько классов в одном интерфейсе, все в одной сборке, все в соответствии с одним и тем же универсальным интерфейсом:
public class AppleFactory : IFactory<Apple> { ... }
public class BananaFactory : IFactory<Banana> { ... }
// ...
Можно с уверенностью предположить, что если у нас есть IFactory<T>
для определенного T
, то это единственный такой тип. (То есть, нет двух вещей, которые реализуют IFactory<Apple>
.)
Я бы хотел использовать отражение, чтобы получить все эти типы, а затем сохранить их все в IDictionary, где ключом является typeof(T)
, а значением является соответствующий IFactory<T>
. Я полагаю, что в конечном итоге мы получим что-то вроде этого:
_map = new Dictionary<Type, object>();
foreach(Type t in [...]) {
object factoryForType = System.Reflection.[???](t);
_map[t] = factoryForType;
}
Какой лучший способ сделать это? У меня проблемы с просмотром, как бы я это сделал с System.Reflection
интерфейсами.