0

В настоящее время я преобразовываю проект, в котором используется DI ServiceStack для Unity. В настоящее время я застрял в методе RegisterAutoWired ServiceStack, который регистрирует конкретный класс.RegisterAutoWired: аналоговый для Unity?

container.RegisterAutoWired<MyClass>().ReusedWithin(ReuseScope.Request); 

Какой метод использовать в IUnityContainer для достижения того же результата?

ответ

0

Просто используйте IUnityContainer.RegisterType<MyClass, MyClass>();

0

Вы на самом деле не нужно регистрироваться конкретные классы. Unity разработает для вас конкретный класс (но по умолчанию он выбирает конструктор с наибольшим количеством параметров). Если вам нужно указать конкретный конструктор или вам нужно настроить специальное время жизни, вы можете захотеть его зарегистрировать.

unityContainer.RegisterType<MyClass>(
    new ContainerControlledLifetimeManager(), // Singleton 
    new InjectionConstructor(myConstructorParameter1, ...); 

Или если у вас есть сложный сценарий, в котором вам нужно контролировать, как экземпляр типа, вы можете использовать RegisterInstance или InjectionFactory.

var myClassInstance = new MyClass(); 
unityContainer.RegisterInstance(myClassInstance); 

unityContainer.RegisterType<MyClass>(
    new InjectionFactory(c => new MyClass())); 

Developer's Guide to Dependency Injection Using Unity очень полезно.

Смежные вопросы