我有一个类:
public abstract class Criteria
{
public virtual Enum Field
{
get; set;
}
public string FieldData;
}
我有一个枚举:
public enum MyFieldsEnum
{
Name=1,
Age=2,
Gender=3,
}
我有一个继承类:
public class MyCriteria : Criteria
{
MyFieldsEnum myfields;
public override MyFieldsEnum Field
{
get
{
return myfields;
}
set
{
base.Field = value;
}
}
}
想法是返回 MyFieldsEnum 而不是空白枚举 field 。但是上面的代码不起作用,不接受 字段的 MyFieldsEnum。 它给出错误:“类型必须是枚举才能匹配覆盖的成员 Criteria.Field”
是否有可能以某种方式实现?
最佳答案
我的投票是将其更改为使用泛型。
public abstract class Criteria<TEnum>
where TEnum : struct, IConvertable // Edit: C# 7.2 TEnum:System.Enum works.
{
public T Field { get; set; }
}
public class MyCriteria : Criteria<MyFieldsEnum>
{
// No need to override Field
}
请注意,C#/CLR 目前不支持枚举作为 C# 7.2 的类型约束。您可以在 C#7.2 中执行 TEnum: System.Enum
,但这里有更多信息:Create Generic method constraining T to an Enum
关于c# - 在继承类中使用自定义枚举覆盖枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32744713/