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")));
...

しかし、うまくいきませんでした。それを行う方法はありますか?

Tnx。

4

1 に答える 1

0

Resolve メソッド (または UnitOfWork に依存する別のオブジェクト) は投稿しませんでしたが、解決時に型を指定する必要があります。 container.Resolve(typeof(UnitOfWork<>))動作しません。

解決しようUnitOfWork<ContextImplmentation>として、ContextImplemenationインスタンスがコンテナーに登録されている場合、UnitOfWork<ContextImplmentation>そのコンテキスト実装値が挿入された を取得します。

そのタイプのものが登録されていない (または何らかの方法でオーバーライドされていない) 場合、エラーが発生します。これは、Unity が使用する IContext の特定の実装を認識できないためです。

于 2013-01-17T01:45:26.293 に答える