Ich möchte wissen, ob man über eine Basisklasse Eigenschaft von einer abgeleiteten Klasse verstecken:C# verstecken von dervied Klassen einige Eigenschaften der Basisklasse
Beispiel:
class BaseDocument
{
public string DocPath{get; set;}
public string DocContent{get; set;}
}
class DerviedDocument: BaseDocument
{
//this class should not get the DocContent property
public Test()
{
DerivedDocument d = new DerivedDocument();
d.//intellisense should only show me DocPath
//I do not want this class to see the DocContent property
}
}
Ich kann die docContent Eigenschaft machen privat, weil ich die BaseDocument-Klasse an anderer Stelle instanziieren und die Eigenschaft dort verwenden möchte. Das wird die Idee einer Eigenschaft sowieso töten.
Eine Möglichkeit, dies zu beheben, wäre die Verwendung einer Schnittstelle, sagen IDoc, die DocPath-Eigenschaft verfügbar macht und sowohl die BaseDocument und DerivedDocument implementieren die Schnittstelle. Dies wird jedoch ihre Eltern-Kind-Beziehung brechen.
kann ich mit dem neuen spielen und Schlüsselwort außer Kraft setzen, aber das ist nicht der richtige Weg wäre es, weil das Kind noch ‚sieht‘ die Eigenschaft
Ich versuchte, das ‚versiegelt‘ Schlüsselwort auf der docContent verwenden, aber das bedeutet nicht scheinen auch das Problem zu lösen.
Ich verstehe, dass es "Vererbung" Vererbung, aber ich denke, dieses Szenario sollte häufig kommen, wo ein Kind alles andere von der übergeordneten, aber ein oder zwei Eigenschaften erhalten muss.
Wie können solche Szenarien elegant gehandhabt werden?
Warum möchten Sie das tun? – ChaosPandion
Ich habe ein existierendes Szenario, das der Frage ähnlich ist. Und außerdem, ich bin nur neugierig zu wissen! – desigeek
Wie andere bereits erwähnt haben, sollten Sie nicht von der Basis abgeleitet werden, wenn dies der Fall ist. Abgeleitete Klassen sollen die Basisklassenschnittstelle vollständig unterstützen. Wenn mein Programm mit CBase arbeitet, sollte sein Verhalten unverändert bleiben, auch wenn ich es mit irgendeinem CDerived für CBase - http://www.objectoror.com/resources/articles/lsp.pdf – Gishu