2010-11-19 40 views
0

derslerine bir dizi inşa ederken, tüm inşaat sırasında bazı bağımlılık nesnesi ile başlatılması gereken bir dizi ders var. Bu sınıfları düşünün:bağımlılık enjeksiyonu

class A { A(IDependency dep) {...} } 
class B { A(IDependency dep) {...} } 
class C { A(IDependency dep) {...} } 
class D { A(IDependency dep) {...} } 

Ben DI yapıcı gerçekleşecek istiyorum ve açıkçası ben sınıfları A, B, C, D, bazı soyut sınıfından miras veya aynı arabirimini uygulamak istiyoruz.

Sorun: Yapıcıyı bir arabirime veya soyut bir sınıfa ekleyemiyorum.

Ne yapmalı? Soyut olmayan bir temel sınıftan miras aldınız mı? Temel sınıfın gerçek bir anlamı yok. Fabrika yöntemlerini kullanın? Onları gerçekten sevmemiştim ...

Herhangi bir öneriniz var mı?

cevap

3

Elbette soyut bir sınıfta bir klavyen olabilir.

public interface IDependency 
{ 
} 

public abstract class A 
{ 
    protected IDependency _dep; 

    protected A(IDependency dep) 
    { 
     _dep = dep; 
    } 
} 

public class B : A 
{ 
    public B(IDependency dep) : base(dep) 

    { 
    } 
} 
0

Soyut sınıfında bir kurucu ekleyebilir ve ben genellikle böyle yaparım. Ya da arayüze dahil edebileceğiniz kurucu yerine emlak enjeksiyonunu kullanabilirsiniz.

İlgili konular