2010-11-21 4 views
1

基本的に私は表現する方法が欲しいです:基底クラスAbstractDataService<>を持つすべてのクラスを見つけて、それらの基本クラスではなくインターフェイスで解決してください。
私は現在、これを持っており、それが動作しますが、それは非常にエレガントではありません。ウィンザーでこの流暢な登録を表現する良い方法はありますか?

container.Register(AllTypes.Pick() 
    .FromAssembly(typeof(AbstractDataService<>).Assembly) 
    .If(Component.IsInSameNamespaceAs(typeof(AbstractDataService<>))) 
    .WithService.FirstInterface()); 

それは可能ですか?

+0

私によく見えます...なぜそれがエレガントではないと言いますか? –

+0

@Mauricio Scheffer:HasBaseOf(typeof(AbstractDataService <>))のようなものがありません。 –

答えて

0

中間変数を作成できます。しかし、...本当の問題が本当にわからない。複雑なものは複雑に見えます。これは現実です。

+0

しかし、私が知らないヘルパーによって複雑なものさえ簡略化することができます。 –

1

おそらく、あなたは.BasedOn(...)を使用できますか?

+0

しかし、何らかの原因でBasedOnが返された場合、.If(Component.IsInSameNamespaceAs(typeof(AbstractDataService <>)))を除くと、すべての型が自分の名前空間に返されます。 –

関連する問題