У меня возникла проблема с разрешением типа, зарегистрированного в UnityContainer. В моем bootstraper я переопределил метод ConfigureContainer. Сейчас этот метод выглядит следующим образомUnityContainer не может решить тип
protected override void ConfigureContainer()
{
base.ConfigureContainer();
RegisterTypeIfMissing(typeof(IView<ShellViewModel>), typeof(Shell), false);
RegisterTypeIfMissing(typeof(CommandReaderWriter), typeof(CommandReaderWriter), true);
}
Тогда в функции CreateShell (также в bootstraper) Я хочу, чтобы получить экземпляр типа CommandReaderWriter, так что я сделал это
var raeder = Container.TryResolve<CommandReaderWriter>();
сожалению это возвращает нулевое значение. Я также пробовал
var anotherReader = Container.TryResolve(typeof (CommandReaderWriter));
но это не помогло. Однако интересен тот факт, что
var isRegistered = Container.IsTypeRegistered(typeof (CommandReaderWriter));
возвращает true.
так какой уместный способ зарегистрировать singleletone в UnityContainer?
Я не знаю UnityBootstrapper, но могу поспорить, что RegisterTypeIfMissing ожидает, что первым параметром будет интерфейс, а не класс. Можете ли вы попасть в IUnityContainer и просто использовать обычные методы Unity для регистрации? – ErnieL