Como esconder (remover) métodos de uma classe base em c #? [duplicado]

Esta questão já tem uma resposta aqui:

C # - Os métodos herdados publicamente podem estar ocultos (por exemplo, tornados privados para a classe derivada) 10 respostas

A essência do problema é dada uma hierarquia de classes como esta:

class A
{
    protected void MethodToExpose()
    {}

    protected void MethodToHide(object param)
    {}
}

class B : A
{
    new private void MethodToHide(object param)
    {}

    protected void NewMethodInB()
    {}
}

class C : B
{
    public void DoSomething()
    {
        base.MethodToHide("the parameter"); // This still calls A.MethodToHide()
        base.MethodToExpose(); // This calls A.MethodToExpose(), but that's ok
        base.NewMethodInB();
    }
}

Como posso evitar que as classes que herdam da classe "B" vejam o métodoA.MethodToHide()? Em C ++, isso foi bastante fácil usando uma declaração comoclass B : private A, mas esta sintaxe não é válida em c #.

Para os interessados ​​(ou imaginando o que eu sourealmente tentando fazer), o que estamos tentando fazer é criar um wrapper para o Rhino.Commons.NHRepository que esconde os métodos que não queremos expor ao nosso grupo de desenvolvedores, para que possamos ter uma maneira de criar cookies. desenvolvendo nosso aplicativo que novos desenvolvedores podem seguir facilmente. Então, sim, acredito que o teste "Is-A" é válido para toda a cadeia (WidgetRepository Is-A BaseRepository Is-A NHRepository).

Editar: Eu deveria ter mencionado, por uma questão de argumento, que a classe A é uma classe API fora do nosso controle. Caso contrário, o problema fica consideravelmente mais fácil.

questionAnswers(10)

yourAnswerToTheQuestion