保存来自不同枚举的枚举值的字段
本文关键字:枚举 字段 保存 | 更新日期: 2023-09-27 18:02:26
我想处理基类中枚举值的赋值。我不确定基类的支持字段应该是什么类型,因为子类确定该值将来自哪个enum。
在下面的基类中,我使用了object
。我在寻找正确的基本类型。我试过Enum
,但是Intellisense没有抱怨构造函数,我有很多其他代码的麻烦。
public enum A { One, Two, Three }
public enum B { Four, Five, Six }
public abstract class FooBase
{
object _enumVal;
protected FooBase(object enumVal)
{
_enumVal = enumVal;
}
}
public class Bar : FooBase
{
public Bar(A enumVal):base(enumVal) {}
}
public class Bat : FooBase
{
public Bat(B enumVal):base(enumVal) {}
}
听起来你真的想要泛型:
public enum A { One, Two, Three }
public enum B { Four, Five, Six }
public abstract class FooBase<T> where T : struct
{
T _enumVal;
protected FooBase(T enumVal)
{
_enumVal = enumVal;
}
}
public class Bar : FooBase<A>
{
public Bar(A enumVal):base(enumVal) {}
}
public class Bat : FooBase<B>
{
public Bat(B enumVal):base(enumVal) {}
}
你不能指定一个通用的约束,这样T
必须在普通c#中是一个enum,但你可以对生成的代码做一些反常的事情来表达IL中的约束。