Вы на самом деле не нужно регистрироваться конкретные классы. 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 очень полезно.