0

使用 Unity,我正在尝试将以下接口注册到模型:

public interface IGenericRepository<T> : IDisposable where T : class

这是在 Unity 的引导程序中注册它的正确方法吗?

            container.RegisterType<IGenericRepository<TypeBasedOverride>, GenericRepository<TypeBasedOverride>>(new HierarchicalLifetimeManager());
4

1 回答 1

1

我认为您想为任何具体的 T 注册该接口。如果是这样,您需要将泛型类型注册为开放的泛型类型(没有类型参数)。检查这个msdn 条目

在您的示例中:

container.RegisterType(typeof(IGenericRepository<>), typeof(GenericRepository<>), new HierarchicalLifetimeManager());

这样,当您请求 的实例时,无论 SomeClass 的具体类型如何IGenericRepository<SomeClass>,Unity 都会为您提供 的实例。GenericRepository<SomeClass>

于 2012-12-16T10:20:48.250 回答