0

我有以下 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")));
...

但它没有用。知道怎么做吗?

肿瘤坏死因子。

4

1 回答 1

0

您没有发布 Resolve 方法(或其他依赖于 UnitOfWork 的对象),但在解决时,您必须指定类型。 container.Resolve(typeof(UnitOfWork<>))不能工作。

如果您尝试解析UnitOfWork<ContextImplmentation>并且ContextImplemenation在容器中注册了一个实例,您将获得一个UnitOfWork<ContextImplmentation>注入了该上下文实现值的实例。

如果您没有注册(或以某种方式覆盖)该类型的任何内容,您将收到错误消息,因为 Unity 不知道要使用 IContext 的哪个特定实现。

于 2013-01-17T01:45:26.293 回答