Considere los empleado, encargado, y clases Asistentes:herencia .NET: suprimir una propiedad de la clase base
public class Emp
{
public string Name { get; set; }
public Manager Manager { get; set; }
public Assistant Assistant { get; set; }
}
public class Manager : Emp
{
}
public class Assistant : Emp
{
}
El objetivo es no permitir una pieza de código para acceder a una propiedad como esta:
var foo = new Manager();
var elmo = new Emp();
elmo.Manager = foo;
elmo.Manager.Manager = new Manager();
//how to disallow access to Manager.Manager ?
Porque Manager
hereda de Emp
, tiene una propiedad .Manager
y .Assistant
.
Pregunta
¿Hay modificadores en la herencia de aplicación .NET para eliminar los .Manager
y .Assistant
propiedades?
actualización
Gracias por su grandes respuestas, todo el mundo. Esperaba que la simplificación y la invención de Emp/Mgr se mostraran en esta pregunta. Está claro que la herencia, en este ejemplo, debería tomarse para otra característica común (algo así como Person
, donde las clases compartirían nombres, fechas de nacimiento, etc.) ¡Se agradece mucho su opinión!
Huele como un problema de diseño para mí. Mientras que los gerentes pueden informar a otro gerente, los asistentes probablemente no tengan un asistente. Quizás la base debería ser Person ... – Walter