c# - 替换继承中的对象

标签 c# oop inheritance

我有一个包含原始属性和自定义属性的类:

public class Version_1
{
    public string Name { get; set; }
    public int Age { get; set; }
    public WeirdDad Weird { get; set; }
    public MysteriousDad Mysterious { get; set; }
}

将来我想用一个 int 属性和我的自定义对象之一的自定义来扩展这个类,这样:

public class Version_2 : Version_1
{
    public string IdentityCode { get; set; }
    public WeirdChild Weird { get; set; }
}

在 Version_2 类中,WeirdDad 对象的外观已被其子对象 WeirdChild 替换,因此我想替换它。 相反,在此示例中,我将在 Version_2 类中同时拥有 WeirdDad 和 WeirdChild。

你会如何实现这个例子?

最佳答案

我相信你想做的是所谓的方法隐藏。您的 Version_2 类应如下所示:

public class Version_2 : Version_1
{
    public string IdentityCode { get; set; }
    public new WeirdChild Weird { get; set; }
}

当您想从 Version_1 访问“Weird”属性时,您必须调用 base.Weird

但请注意,不推荐这样做,而且会产生代码味道。

关于c# - 替换继承中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33810815/

相关文章:

java - 继承和聚合 UML

具有协变返回类型的 Java 类型转换

c# - 自定义对象序列化与 PreserveReferencesHandling

C# 将 XML 反序列化为 ChildClasses 列表

c# - 如何通过 Sendgrid 发送安全电子邮件?

c# - 如何在不使用循环的情况下从数据表中过滤空行?

c++ - 开始 c++ : OOP Methodologies and more

javascript - 如何访问我定义的 JS 对象?

java - 如何在选择每个子项时设置根复选框被选中(GWT)

c# - 实例化一个派生自 MonoBehaviour 的类