Я пытаюсь написать автоматическое расширение Unity.
Хотя было бы намного проще использовать механизм разрешения зависимостей Windsor и RhinoMocks, я вынужден использовать Unity и Moq.
Я не нашел существующего решения, использующего Moq, и выяснил, почему.
Moq не может генерировать mocks только из параметра Type, что усложняет расширения Unity, и, если я попробую декоратор IUnity, я попаду в блок, когда попаду сюда:
public T Resolve<T>()
{
T instance;
try
{
instance = _container.Resolve<T>();
}
catch(ResolutionFailedException)
{
// if T is reference type
instance = new Mock<T>(MockBehavior.Loose).Object;
// else
// return default(T);
}
return instance;
}
Проблема заключается в ограничении универсального типа в Moq, являющемся ссылочным типом.
Вопрос в том, возможна ли условная логика в комментариях таким образом, чтобы удовлетворить компилятор?