2017-09-04 8 views
1

キャットウィンザーをDIコンテナとして使用しています。私は名前を指定して、私のサービスを登録:キャッスルウィンザー:コンベンションで名前付きパーツで登録

container.Register(Component.For<MyService>().Named("MyService")); 

問題は、私は私のシステムでのサービスの多くを持っていると私はそれらの各1レジスタの疲れということです。私はコンベンションでNamedの部分を失うことなくこれをどうやって行うことができますか?

WindsorContainer container = new WindsorContainer(); 
container.Register(Classes.FromThisAssembly() 
          .BasedOn<IService>() 
          .Configure(c => c.Named(c.Implementation.Name))); 

:あなたは、いくつかの基本/インターフェイスから派生するすべてのサービスを登録するには、以下を使用して、自分の名前を設定することができます

答えて

4

(私はクラスと同じ名前で、私のサービスを呼び出すこと気にしません)次の例:

public interface IService { } 
public class Service1 : IService { } 
public class Service2 : IService { } 
public class Service3 : IService { } 
public class Service4 : IService { } 
public class Service5 : IService { } 
public class Service6 : IService { } 

出力されました:

enter image description here


登録するクラスを選択する追加の方法があります。もっと見るin documentation

+1

@eitanby - これは問題の解決に役立ちましたか? –

+0

ああ、はい!ありがとう、それは私が必要としたものです。 – eitanby

+0

@eitanby - 聞いて嬉しいです:)喜んで助けてください –

関連する問題