10 Stimmen

Was ist der beste Weg, um eine Eigenschaft umzusetzen, die für die Öffentlichkeit schreibgeschützt ist, aber von Erben beschreibbar ist?

Wenn ich eine Eigenschaft habe, die ich den Vererbenden zum Schreiben erlauben möchte, aber extern schreibgeschützt halten möchte, wie implementiere ich dies am besten? Normalerweise gehe ich etwa so vor:

private object m_myProp;
public object MyProp
{
    get { return m_myProp; }
}
protected void SetMyProp(object value)
{
    m_myProp = value;
}

Gibt es einen besseren Weg?

36voto

Marc Gravell Punkte 970173
private object m_myProp;
public object MyProp
{
    get { return m_myProp; }
    protected set { m_myProp = value; }
}

Oder in C# 3.0

public object MyProp {get; protected set;}

5voto

Brendan Enrick Punkte 4217

Dies ist definitiv der richtige Weg.

public object MyProp {get; protected set;}

Wenn Sie sich in einer älteren Version von C# befinden, ist dies der richtige Weg.

private object _myProp;
public object MyProp
{
    get { return _myProp; }
    protected set { _myProp = value; }
}

0voto

Bill K Punkte 61074

Ein Setter und Getter zu haben ist nicht wirklich besser als eine Variable auf dieser Sichtbarkeitsebene zu haben.

Daher könnten Sie einfach die Variable selbst als geschützt und den Leser als öffentlich deklarieren.

Dennoch sind Setter und Getter ein Anzeichen für schlechte OO--sind Sie sicher, dass Sie sie benötigen? Sie sollten das Objekt darum bitten, etwas mit seinen Mitgliedern zu tun, anstatt das Objekt nach seinen Mitgliedern zu fragen und diese außerhalb des Objekts zu manipulieren.

Dies ist eine sehr allgemeine Regel und es gibt viele Ausnahmen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X