这样子可否合你的意思呢? 我试过了可以,只是不知你说的是否如此 public class Class1<T> { public string Str { get; set; } } public enum Abc { a,b,c } private void button1_Click(object sender, EventArgs e) { Class1<Abc> l = new Class1<Abc>(); l.Str = Abc.a.ToString(); MessageBox.Show(l.Str); }
当前FrameWork版本,直接通过类型参数的约束是否无法做到的不过可以通过程序控制做限定,比如提供一种思路: class MyClass<T> where T : struct { public MyClass() { if (typeof(Enum) != typeof(T).BaseType) { throw new Exception("类型参数不合法,当前泛型类的类型参数必须为枚举类型"); } } }
我试过了可以,只是不知你说的是否如此 public class Class1<T>
{
public string Str { get; set; } }
public enum Abc
{
a,b,c
}
private void button1_Click(object sender, EventArgs e)
{
Class1<Abc> l = new Class1<Abc>();
l.Str = Abc.a.ToString();
MessageBox.Show(l.Str);
}
class MyClass<T> where T : struct
{
public MyClass()
{
if (typeof(Enum) != typeof(T).BaseType)
{
throw new Exception("类型参数不合法,当前泛型类的类型参数必须为枚举类型");
}
}
}