2009-01-27 4 views
5

İki arayüzlere.Castle Windsor, çoklu arayüzleri uygulayan bir sınıfa nasıl cevap veriyor? ICustomerService ve IOrderService her Bir sınıf hem arabirimleri uygulamak istiyoruz vb GetCustomer, GetOrder,</p> <p>gibi fonksiyonları bir çift var:: Sunucu Örneğin

Castle Windsor buna nasıl karşılık veriyor? İlk etapta mümkün mü? İki arabirimden birine dayanarak Sunucu nesnesini çözdüğümde, aynı nesneyi alır mıyım? Parametrelerinde her iki arabirime de sahip bir kurgulayıcım olduğunda ne olur? Hala bir nesne inşa edilecek mi. LifeStyle varsayılan değere bırakılır:

: Singleton.

cevap

3

this post'u kontrol ettiniz mi?

Here da

Forum post ayrıca CLR türü ve bir Windsor hizmet veya bileşen (glossary if needed is here) arasında hiçbir sert bire-bir eşleme var bu

+1

Evet, onları kontrol ettim. İlk mesaj benim sorum ile aynı değil, ikinci yazıdaki hata, eski bir Kale versiyonundan kaynaklanıyor. Testleri içeren gönderinin kod dosyası yararlıdır, sadece bir nesnenin kullanıldığını gösterir. –

+1

Forum gönderisi, –

+0

forum postasının çıkmaz bağlantıya sahip olduğunu; [bu cevap] (http://stackoverflow.com/a/684392/322283) yararlıdır; Krysztof'un cevabı aşağıdadır. – Marijn

3

bilgi vardır.

Yani aşağıdaki senaryolardan herhangi birine sahip olabilir: Tek bir hizmeti maruz tek Service aynı uygulama türüyle

container.Register(
    Component.For<IFoo>().ImplementedBy<Foo1>(), 
    Component.For<IFoo>().ImplementedBy<Foo2>() 
); 
  • Birçok Bileşenleri maruz farklı uygulama türleri ile

    • Birçok Bileşenlerinin

      container.Register(
          Component.For<IFoo>().ImplementedBy<Foo1>(), 
          Component.For<IFoo>().ImplementedBy<Foo1>().Named("second") 
      ); 
      
    • Man Mümkün olduğu ve olsun ya da olmasın olacak - Aynı uygulama türüyle y Bileşenleri evet Gördüğünüz gibi farklı Hizmetleri

      container.Register(
          Component.For<IFoo, Bar>().ImplementedBy<Foo1>() 
      ); 
      

    maruz farklı Hizmetleri

    container.Register(
        Component.For<IFoo>().ImplementedBy<Foo1>(), 
        Component.For<IBar>().ImplementedBy<Foo1>().Named("second") 
    ); 
    
  • Tek Bileşen maruz Aynı örneği (singleton varsayarak) seçtiğiniz seçeneği belirtebilirsiniz - her iki Hizmet de aynı Bileşen tarafından açıklanacaktır, ya da değil.

  • İlgili konular