使用Unity,我试图将以下界面注册到模型:
public interface IGenericRepository<T> : IDisposable where T : class
这是在Unity的Bootstrapper中注册它的正确方法吗?
container.RegisterType<IGenericRepository<TypeBasedOverride>, GenericRepository<TypeBasedOverride>>(new HierarchicalLifetimeManager());
答案 0 :(得分:1)
我想你想为任何具体的T注册该界面。 如果是这样,您需要将泛型类型注册为开放泛型类型(不带类型参数)。请检查此msdn entry。
在你的例子中:
container.RegisterType(typeof(IGenericRepository<>), typeof(GenericRepository<>), new HierarchicalLifetimeManager());
这样,当您请求IGenericRepository<SomeClass>
的实例时,Unity将为您提供GenericRepository<SomeClass>
的实例,无论SomeClass的具体类型如何。