Я не уверен на 100%, что понимаю вопрос, но вот мое мнение.Если вам нужен словарь экземпляров с ключами по типу, самый простой способ сделать это - использовать статический универсальный класс, а не фактический словарь:
public static class Dict<T> {
public static T Instance { get; set; }
}
Затем установить экземпляр, связанный с типом IFoo
вы бы сделали Dict<IFoo>.Instance = myIFooInstance;
, а чтобы получить его обратно, вы просто сохранили бы результат Dict<IFoo>.Instance
.
Если вместо этого вы хотите получить Mock
экземпляров, имеющих ключи по типам, вы можетесделать что-то очень похожее:
public static class MockDict<T> {
public static Mock<T> Instance { get; set; }
}
Затем вы можете сделать что-то вроде:
Mock<IFoo> myMock = ...
MockDict<IFoo>.Instance = myMock;
...
Mock<IFoo> myMock2 = MockDict<IFoo>.Instance;