Riutilizza l'argomento del costruttore di base () in questo () costruttore

-1

Diciamo che ho due classi Base e Derived : Base .

Derived deve essere in grado di utilizzare un DerivedComponent : BaseComponent , proprio come tutti gli altri derivati di Base usano il proprio componente specifico derivato. Tutti questi componenti di BaseComponent , come DerivedComponent , hanno alcune funzionalità comuni accessibili in Base .

Poiché non desidero ridurre questo BaseComponent ogni volta che utilizzo la funzionalità DerivedComponent in Derived , ho anche aggiunto il suo riferimento come DerivedComponent a Derived .

class Base
{
    private BaseComponent component;

    protected Component
    {
        get { return component; }
    }

    Base(BaseComponent component)
}

class Derived : Base
{
    private DerivedComponent component;

    Derived() : base(new DerivedComponent())
    {
        this.component = (DerivedComponent) base.Component;
    }
}

class BaseComponent {}

class DerivedComponent : BaseComponent {}

È necessario farlo in questo modo, con il downcast? Non posso in qualche modo riutilizzare l'argomento da base() e assegnarlo direttamente al mio componente Derived ?

    
posta BooleanAssange 16.11.2016 - 21:34
fonte

1 risposta

1

È possibile utilizzare il concatenamento del costruttore per passare la dipendenza a un costruttore separato in Derived , quindi passare entrambi al costruttore base e impostare il valore del campo:

class Base
{
    private BaseComponent component;

    protected Component
    {
        get { return component; }
    }

    Base(BaseComponent component)
}

class Derived : Base
{
    private DerivedComponent component;

    Derived() : this(new DerivedComponent())
    { }

    Derived(DerivedComponent component) : base(component)
    {
        this.component = component;
    }
}
    
risposta data 16.11.2016 - 23:01
fonte

Leggi altre domande sui tag