我有以下UnitOfWork类:
public class UnitOfWork<TContext> : IUnitOfWork where TContext : IContext, new()
{
private readonly IContext _context;
public UnitOfWork()
{
_context = new TContext();
}
public UnitOfWork(IContext context)
{
_context = context;
}
...
}
我希望使用Unity将其注册到IoC容器,但我不知道该怎么做。我试着做这样的事情:
var container = new UnityContainer();
container.RegisterType(typeof(UnitOfWork<>), new InjectionConstructor(new GenericParameter ("TContext")));
...
但它不起作用。知道怎么做吗?
TNX。
答案 0 :(得分:0)
您没有发布Resolve方法(或依赖于UnitOfWork的其他对象),但在解决时,您必须指定类型。 container.Resolve(typeof(UnitOfWork<>))
无效。
如果您尝试解析UnitOfWork<ContextImplmentation>
并在容器中注册了ContextImplemenation
实例,那么您将获得注入了该上下文实现值的UnitOfWork<ContextImplmentation>
。
如果您没有注册(或以某种方式覆盖)该类型的任何内容,您将收到错误,因为Unity将不知道要使用哪个IContext的具体实现。