Не допускайте регистрации экземпляра по умолчанию в StructureMap - PullRequest
0 голосов
/ 19 октября 2018

У нас есть интерфейс, который реализуется двумя классами:

public interface ISomething { void DoSomething(); }
public class Something1 : ISomething { public void DoSomething() {...} }
public class Something2 : ISomething { public void DoSomething() {...} }

Эти интерфейсы используются двумя разными модулями.Module1 нужны Something1 и Module2 нужны Something2:

public class Module1(ISomething something) { something.DoSomething(); }
public class Module2(ISomething something) { something.DoSomething(); }

Мы настроили это в реестре:

For<Module1>().Use<Module1>().Ctor<ISomething>().Is<Something1>();
For<Module2>().Use<Module2>().Ctor<ISomething>().Is<Something2>();

Однако, когда он запускается, мы получаемследующая ошибка:

Экземпляр по умолчанию не зарегистрирован и не может быть автоматически определен для типа 'ISomething'

Если мы создаем и регистрируем класс по умолчанию, тогда он работает имы не получаем вышеуказанную ошибку:

public class DefaultSomething : ISomething { public void DoSomething() {...} }
For<ISomething>().Use<DefaultSomething>();

Все варианты использования интерфейса настраиваются в реестре, и мы не хотим указывать значение по умолчанию, но кажется, что вы должны сообщить StructureMap, чтоиспользовать, даже если это никогда не нужно использовать.Можно ли не указывать экземпляр по умолчанию?

Спасибо:)

...