gpt4 book ai didi

c# - 在父方法中访问子对象的静态属性

转载 作者:行者123 更新时间:2023-11-30 13:52:27 24 4
gpt4 key购买 nike

假设我有以下代码:

class Parent
{

static string MyField = "ParentField";

public virtual string DoSomething()
{
return MyField;
}
}

class Child : Parent
{
static new string MyField = "ChildField";
}

现在我希望能够执行以下两项操作:

Console.WriteLine(Parent.MyField);
Console.WriteLine(Child.MyField);

这些按预期工作,但我也想这样做:

Child c = new Child();
Console.WriteLine(c.DoSomething());

由于没有为 Child 类定义 DoSomething(),因此返回的是 Parent 的 MyField,但我想要的是 Child 的 MyField。

所以我的问题是:我有什么办法可以做到这一点吗?

注意:覆盖 Child 类中的方法是一个选项,但由于我将有很多子类继承自 Parent 并且该方法应该在所有这些类中执行相同的操作,因此更改此方法中的某些内容会带来很麻烦。

最佳答案

如果您发现自己需要一种语言不支持的构造,在本例中是 static virtual 成员,那就是一种气味,表明您的设计可能有问题。

与其向我们展示解决方案,不如向我们展示您尝试使用该解决方案解决的问题。我的猜测是有一种完全不同的设计可以消除这种奇怪的需求。

换句话说:您收到的答案不是您想要的答案,因为您提出的问题实际上并不是您应该提出的问题。我想不出在任何情况下所提议的设计都能提供另一种更传统的设计所不具备的优势。

关于c# - 在父方法中访问子对象的静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2420085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com