【发布时间】:2010-01-19 22:30:47
【问题描述】:
考虑 Employee、Manager 和 Assistant 类:
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
{
}
目标是禁止一段代码访问这样的属性:
var foo = new Manager();
var elmo = new Emp();
elmo.Manager = foo;
elmo.Manager.Manager = new Manager();
//how to disallow access to Manager.Manager ?
因为Manager 继承自Emp,所以它具有.Manager 和.Assistant 属性。
问题
.NET 的继承实现中是否有任何修饰符可以删除 .Manager 和 .Assistant 属性?
更新
谢谢大家的精彩回答。我希望 Emp/Mgr 的简化和设计能在这个问题中体现出来。很明显,在这个例子中,继承应该被带到另一个共同点(比如Person,类将共享名称、生日等)非常感谢您的输入!
【问题讨论】:
-
对我来说闻起来像是设计问题。虽然经理可能会向另一位经理汇报,但助理可能没有助理。也许基础应该是 Person...
标签: c# .net inheritance