0

Unityを使用して、次のインターフェイスをモデルに登録しようとしています。

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

これはUnityのBootstrapper内にこれを登録する正しい方法ですか?

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

1 に答える 1

1

具体的な T のインターフェイスを登録したいと思います。その場合は、ジェネリック型をオープン ジェネリック型として登録する必要があります (型引数なし)。このmsdn エントリを確認してください。

あなたの例では:

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

このようにして のインスタンスをリクエストするとIGenericRepository<SomeClass>、Unity はGenericRepository<SomeClass>SomeClass の具象型に関係なく のインスタンスを提供します。

于 2012-12-16T10:20:48.250 に答える