Я часто оказываюсь в ситуации, когда я создаю универсальный интерфейс или класс, а затем хочу использовать разные версии этого класса или интерфейса не универсальным способом. Например, у меня может быть такой интерфейс:
interface ICanCreate<T>
{
T NewObject();
}
Что позволяет классу быть фабрикой для этого типа. Затем я хочу зарегистрировать их в общем классе фабрики, поэтому я пытаюсь написать что-то вроде этого:
public class Factory
{
private Dictionary<Type, ICanCreate> mappings; // what do I put here????
public void RegisterCreator<T>(ICanCreate<T> creator)
{
}
public T Create<T>()
{
}
}
В словаре какой тип я использую для своего значения? Я не знаю, пропускаю ли я какой-то принцип проектирования, и я знаю, что это во многом связано с ко (ntra?) Дисперсией. Любая помощь или идеи будут высоко оценены.