【发布时间】:2022-07-27 00:21:12
【问题描述】:
如何防止一个属性的继承,使其不再计入实例化对象。 在以下示例中,我希望对象实例 B 仅包含两个属性,即 MyCommonProperty 和 Name。
public class A
{
public string MyCommonProperty { get; set; }
public string MyClassASpecificProperty { get; set; }
}
public class B : A
{
public string Name { get; set; }
}
【问题讨论】:
-
将其他属性设为私有。但是,如果它需要保持公开:运气不好;你不能。
-
它必须保持公开
-
那么你基本上是在试图打破继承。如果有人可以写
A a = new B();,那么他们可以使用a.MyClassASpecificProperty。您可能需要考虑使用 real 基类A,然后使用单独的派生类添加MyClassASpecificProperty。 -
@diaz15:那么继承不是这项工作的正确工具。如果
B“是”A,那么B将具有A的属性。 -
如果 B 是 A,则 B 具有 A 的成员。如果 A 的成员对 B 没有意义,请重新考虑在这种情况下使用继承。