¿Cómo ocultar (eliminar) los métodos de una clase base en C #? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

C #: se pueden ocultar los métodos heredados públicamente (por ejemplo, hacerlos privados a la clase derivada) 10 respuestas

La esencia del problema es, dada una jerarquía de clases 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();
    }
}

¿Cómo puedo evitar que las clases que heredan de la clase "B" vean el método?A.MethodToHide()? En C ++, esto fue bastante fácil usando una declaración comoclass B : private A, pero esta sintaxis no es válida en C #.

Para aquellos interesados ​​(o preguntando lo que estoyDe Verdad tratando de hacer), lo que estamos tratando de hacer es crear un contenedor para Rhino.Commons.NHRepository que oculta los métodos que no queremos exponer a nuestro grupo de desarrolladores, para que podamos tener una forma sencilla de Desarrollando nuestra aplicación que los nuevos desarrolladores pueden seguir fácilmente. Así que sí, creo que la prueba "Is-A" es válida para toda la cadena (WidgetRepository Is-A BaseRepository Is-A NHRepository).

Editar: Debería haber mencionado, por el bien del argumento, que la clase A es una clase API fuera de nuestro control. De lo contrario, el problema se vuelve considerablemente más fácil.

Respuestas a la pregunta(10)

Su respuesta a la pregunta