私はこれを単に把握することはできません。 .Netコア2.0でAutofacを使用し、単純な依存関係を解決しようとしています。私の現在のコードは私が試みたすべてを反映していないように私はすべてを試したように感じる。ここでサービスに割り当てることができないタイプのAutofac DI
は、コンストラクタの
なしElucidate.Core.Application.ValuesController」タイプ に「Autofac.Core.Activators.Reflection.DefaultConstructorFinder」で見つからない私はAutofacから取得していた例外の一つであります'は利用可能なサービスとパラメーターで呼び出すことができます。パラメーター' Elucidate.Core.Data.Repository.IRepository'1 [Elucidate.Core.Model.User.IUser] rep 'of constructor' Void .ctor(Elucidate.Core。データ。リポジトリ.IRepository`
ここに私は、 ndencyはここ
public ValuesController(IRepository<IUser> rep)
を注入し、私は間違って何をやっている
builder.RegisterType<User>().As<IUser>();
builder.RegisterType<CoreUserStore<User>>();
builder.RegisterType(typeof(Repository<User>)).As<Repository<IUser>>();
builder.RegisterType<EntityFrameworkModelContext<User>>(); //.As<IModelContext>();
私はautofacモジュール内の型を登録していますどのようにでしょうか?私はautofacには新しく、Unityには絶滅のように見える。
ありがとうございました!私はこれを試しましたが、まだ得られない例外があります。二重括弧内の表記法はまったく問題になっていますか?これら両方の具体的な型は、これらのインタフェースを確実に実装します。 ArgumentExceptionが:タイプが 'Elucidate.Core.Data.Repository.Repository'1 [Elucidate.Core.Model.User.User]' 「Elucidate.Core.Data.Repository.IRepository'1を[サービスに割り当てません[Elucidate.Core.Model.User.IUser、Elucidate.Core.Model、Version = 1.0.0.0、Culture =ニュートラル、PublicKeyToken = null]] '。 –
@JimPhelan、あなたが今扱っているのは別の問題です。共分散。 'リポジトリ'はインタフェース 'IRepository 'に割り当てられません。Autofacなしでコードで試してみると、コンパイラエラーが発生します。 'IUser'を使わず、具体的な型のリポジトリだけを登録することをお勧めします。そうでなければ、ここで共分散を使う方法をチェックすることができます:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/out-generic-modifier –
Xenolightning
ありがとうございます@xenolightning私は持っていますそれは少しインターフェイスを再設計した後に分類しました。あなたが最初に説明したように私はAutofacなしでそれを試して、私が一度それをかなり明白にしておくべきでした。再度、感謝します。 –