【发布时间】:2016-09-08 13:26:30
【问题描述】:
给定一个构造函数
public MyObject(int id){
ID = id;
}
还有两个枚举:
public enum MyEnum1{
Something = 1,
Anotherthing = 2
}
public enum MyEnum2{
Dodo = 1,
Moustache= 2
}
是否可以将泛型枚举作为构造函数的参数传入?我正在寻找以下方面的解决方案:
public MyObject(enum someEnum){
ID = (int)someEnum;
}
所以你可以这样做:
var newObject = new MyObject(MyEnum1.Something);
var anotherObject = new MyObject(MyEnum2.Dodo);
【问题讨论】:
-
您可以接收整数形式的参数,并在传递时将您的枚举转换为整数。
-
You can't do a generic constructor in C#。你能做的最好的事情是用一个泛型子类编写一个非泛型基类,然后使枚举类型成为泛型子类的类型参数。尴尬的。
MyBase b = new MySub<EnumA>(EnumA.SomeValue); int n = b.ID; -
MyObject(MyEnum1 enum1Selection){} 但整数更好
-
new MyObject((int)MyEnum1.Something);? -
支持@SuperPeanut,但是,我会创建一个“objectType”
enum并将其传递给工厂,该工厂又使用正确的enum参数创建正确的东西。var newObject = myFactory.Create(ObjectType.One).