私はそのコンストラクタでIMyDependencyをとるサービスを持っています。 IMyDependency、MyDependency、およびサービスはすべて同じアセンブリ内に存在します。 MyDependencyには、パラメータのない単一のパブリックコンストラクタがあります。funqのservicestack - 慣習による自動配線
驚いたことに、これは動作しませんでした:
container.RegisterAutoWired<IMyDependency>();
それは "System.NullReferenceException" をスローします。
私はこれを行う場合、それは動作します:
container.RegisterAutoWiredAs<MyDependency, IMyDependency>();
をしかし、その後、ので、この行います
container.RegisterAs<MyDependency, IMyDependency>();
だから、違いは何ですか? 「自動配線」が具体的な実装を見つけることができず、依存関係を必要とするサービスを解決できるかどうかに違いがない場合、自動配線とは何ですか?
Funqは慣例により具体的な実装を見つけることができると思われますか?もしそうなら、同じ命名ではないなら、その慣例は何ですか?
ありがとうございました。
だから私はこれを正しく理解していれば、私がやるべきこと: container.RegisterAutoWired(); しかし、これを実行すると、実行時に依存関係のあるサービスを呼び出すと、「IMyDependency型の依存関係を解決できませんでした」というメッセージが表示されます。コンテナが登録された具体的な型に対応するインタフェースを見つけることができないように見えるので、私はこのメソッドの目的についてはまだ不明です。 –
'MyDependency>を登録すれば、' MyDependency'プロパティをすべて注入するよりも簡単に登録できます。 IMyDependencyプロパティを挿入する場合は、RegisterAsを呼び出す必要があります。 –
mythz
私のプロジェクトでは、約200クラスの習慣をMyClass:IMyClassと似ています。だから私は新しいクラスを実装するたびにこれに応じて、または削除することができますか?ユニティ、ウィンザー、StructureMapは慣習によりオートワイヤーを持っています。 – nerijus