我不太熟悉 C# 或抽象类,因此这可能是一个简单的修复。我有一个带有可为空 Action 属性的抽象类:
public abstract class MyAbstractClass {
public abstract Action<MyType>? myAbstractAction { get; set; }
}
具体类:
public class MyConcreteClass: MyAbstractClass {
// This gives me a warning that I'm "hiding" the abstract property
public override Action<MyType>? myAbstractAction = null;
}
Action 属性只能由具体类的父类设置:
public classs MyParentClass {
public MyConcreteClass concreteClassInstance;
public MyParentClass(MyConcreteClass concreteClassInstance) {
this.concreteClassInstance = concreteClassInstance;
this.concreteClassInstance.myAbstractAction = //...
}
}
我的问题是我不确定如何在 MyConcreteClass 中定义 Action。我上面使用的给出默认值 null 的行会导致错误,指出它“隐藏继承的成员”,这似乎不是我想要的。我认为它希望我提供实际的获取/设置块,但我认为这对我不起作用,因为它是外部类决定操作的作用。我有点觉得我可能使用了错误的工具来完成这里的工作,所以希望得到更熟悉该语言的人的指导。
您收到该警告的原因是在基类中您声明了一个属性
myAbstractAction
,而在子类中您声明了一个字段myAbstractAction
。所以有两个同名的成员。
此房产:
public abstract Action<MyType>? myAbstractAction { get; set; }
应该像这样被覆盖:
public override Action<MyType>? myAbstractAction { get; set; }
您应该输入
get
和 set
。