c # esconde das classes dervidas algumas propriedades da classe base
Eu quero saber se é possível ocultar uma propriedade de classe base de uma classe derivada:
Exemplo:
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
}
}
Eu não posso tornar a propriedade DocContent privada, porque eu quero instanciar a classe BaseDocument em outro lugar e usar a propriedade lá. Isso vai matar a ideia de uma propriedade de qualquer maneira.
Uma maneira de corrigir isso seria usar uma interface, por exemplo, IDoc, que expõe a propriedade DocPath e faz com que o BaseDocument e o DerivedDocument implementem a interface. Isso vai quebrar seu relacionamento pai-filho embora.
Eu posso brincar com as novas palavras-chave e substituir, mas isso não é o caminho certo, quer porque a criança ainda "vê" a propriedade
Eu tentei usar a palavra-chave 'selada' no DocContent, mas isso não parece resolver o problema também.
Eu entendo que isso 'quebra' a herança, mas eu acho que esse cenário deve estar chegando frequentemente onde uma criança precisa obter tudo o mais do pai, mas uma ou duas propriedades.
Como esses cenários podem ser tratados com graça?