如果我有一个约束为类型'int'的泛型方法,那么当然我应该能够将一个整型转换为泛型T型。例如...C#泛型约束的泛型方法拒绝从整型转换为泛型
public T ExampleMethod<T>(int unchanged) where T : int
{
return (T)unchanged;
}
...编译器抱怨无法将类型“诠释”到“T”但我有一个约束指示目标是为整数。所以肯定它应该工作?
更新:
的实际情况是,我想返回一个枚举值一个辅助方法。所以,我的理想辅助方法,会更喜欢这个....
public T GetAttributeAsEnum<T>(XmlReader reader, string name) where T : enum
{
string s = reader.GetAttribute(name);
int i = int.Parse(s);
return (T)i;
}
...并使用它像这样...
StateEnum x = GetAttributeAsEnum<StateEnum>(xmlReader, "State");
CategoryEnum y = GetAttributeAsEnum<CategoryEnum>(xmlReader, "Category");
OtherEnum z = GetAttributeAsEnum<OtherEnum>(xmlReader, "Other");
...但你无法通过枚举约束。
为什么不指定参数类型为'T' ? – gilly3 2012-08-02 04:06:06
我的实际情况比较复杂。我想要一个帮助器方法,从文件中读取一个字符串,该字符串实际上是一个数字。然后将该数字转换为正确的目标枚举类型。所以... – 2012-08-02 04:09:31
这不会编译。错误:'int'不是有效的约束。用作约束的类型必须是接口,非密封类或类型参数。 – 2012-08-02 04:09:49