私はAutoFAC 2.2.4を使用していますが、コンテナの解像度に共分散に関する質問があります。オートファックの共分散?
私は私のリポジトリの基本インタフェースの定義がありますなど、
IRepository<T, TKey>
(処理鍵)を検索しているのfindAll()
それはこのように、例えば、使用されています。
IRepository<Catalog, int>
意味で、カタログには整数キーがあります。私はこのようなリポジトリを登録しました:
builder.RegisterType<CatalogRepository>()
.As<IRepository<Catalog, int>>();
すべてが順調でした。私は.Find()の追加のタイプを必要と実現にその後 ので、私は新しいインターフェイスdefiend:
ICatalogRepository : IRepository<Catalog, int>
{
Catalog Find(string name);
}
をそして私はregisteration変更:
builder.RegisterType<CatalogRepository>()
.As<ICatalogRepository>();
をしかし、今IRepository <カタログを解決しようと、int>が失敗します。私はAutofacがICatalogRepositoryとの関係を認識して解決すると思った。私はこれをしなければなりませんでした:
builder.RegisterType<CatalogRepository>()
.As<ICatalogRepository>()
.As<IRepository<Catalog, int>>();
解決するには両方を取得する必要があります。 (派生したインターフェイスを知らない他の一般的なエンティティ操作ツールからIRepositoryを解決するための呼び出しがまだあります。)何か間違っていますか?
これはかなりきれいです - ありがとうございます! – n8wrl