Я хочу знать, возможно ли скрыть свойство базового класса от производного класса:
Пример:
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
}
}
Я не могу сделать свойство DocContent частным, потому что хочу создать экземпляр класса BaseDocument в другом месте и использовать его там. Это все равно убьет идею собственности.
Один из способов исправить это - использовать интерфейс, скажем IDoc, который предоставляет свойство DocPath и заставляет и BaseDocument, и DerivedDocument реализовать интерфейс. Это нарушит их отношения между родителями и детьми.
Я могу поиграть с новыми и переопределить ключевые слова, но это неправильный путь, потому что ребенок все еще «видит» свойство
Я пытался использовать ключевое слово «sealed» в DocContent, но, похоже, это тоже не решает проблему.
Я понимаю, что это «нарушает» наследование, но я предполагаю, что этот сценарий должен часто встречаться, когда ребенку нужно получить все остальное от родителя, кроме одного или двух свойств.
Как можно изящно обрабатывать такие сценарии?