Динамический словарь C # - PullRequest
0 голосов
/ 20 января 2010

Я хотел бы найти способ иметь словарь различных объектов Mock с различными экземплярами, обозначенными каким-то уникальным идентификатором.Я использую Moq, так что синтаксис для этого - Mock<IFoo>, что касается набора текста.Но я хотел бы, чтобы Словарь содержал в основном это, чтобы я мог динамически разрешать и перезаписывать экземпляры во время выполнения:

Key = IFoo (basically a type)

Value = new SomeCustomType< T >
{
  T ConcreteObject
  Mock< T > MockObject
}

Возможно, я не получаю свой вопрос надлежащим образом, но я мог бы использовать некоторую помощь!

Ответы [ 2 ]

1 голос
/ 21 января 2010

Если вам не нужен конкретный объект, вы можете использовать контейнер для автоблокировки .

Вот контейнер для автозамены Autofac для Moq .

1 голос
/ 20 января 2010

Я не уверен на 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;
...