城ウィンザーで一般的な抽象クラスを登録、私はこの例では私の場合を簡素化しましたGenericBaseClass<EntityA>
をリクエストするとConcreteA
を返します。私は慣例によってタイプを登録しようとしています
タイプ GenericBaseClass`1のインスタンスを取得しようとしているときに、私はの定義を変更した場合ライセンス認証エラーは、キー「」
を発生しました:これを解決しようとすると、私のような何かを言って例外を取得します抽象クラスからインターフェイスへGenericBaseClass<T>
、この登録コードは動作します:
container.Register(AllTypes.FromAssemblyContaining<BaseClass>()
.BasedOn(typeof(GenericBaseClass<>))
.WithService.FirstInterface());
はしかし、私はそれの内のコードを記述する必要があるため、抽象クラスを使用する必要があります。 ConcreteX
クラスごとに手動で登録することはできますが、あまり役に立ちません。
私はこれを試してみた:
container.Register(AllTypes.FromAssemblyContaining<BaseClass>()
.BasedOn(typeof(GenericBaseClass<>))
.WithService.Base());
デバッグは、私はタイプがコンテナに追加されていない見ることができます。
私はCastle Windsor 2.6を使用しています。
ありがとうございました。
ウィンザー2.6はありません。あなたは2.5.4を意味しましたか? –