Questions tagged «generic-constraints»

21
创建将T约束为枚举的泛型方法
我建立一个功能扩展Enum.Parse的概念, 如果找不到Enum值,则允许解析默认值 不区分大小写 所以我写了以下内容: public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum { if (string.IsNullOrEmpty(value)) return defaultValue; foreach (T item in Enum.GetValues(typeof(T))) { if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item; } return defaultValue; } 我收到错误约束不能是特殊类System.Enum。 足够公平,但是有没有允许通用枚举的变通办法,或者我将不得不模仿该Parse函数并将类型作为属性传递,这对代码强制了严格的装箱要求。 编辑谢谢所有下面的建议。 已经解决(我离开了循环以保持不区分大小写-解析XML时正在使用它) public static class EnumUtils { public static T ParseEnum<T>(string value, T defaultValue) …

7
什么是“特殊班级”?
未能获得如下所示的内容后: public class Gen<T> where T : System.Array { } 与错误 约束不能是特殊类`System.Array' 我开始怀疑,到底是什么 “特殊班”? 当人们System.Enum在通用约束中指定时,人们似乎常常会遇到相同类型的错误。我得到了相同的结果System.Object,System.Delegate,System.MulticastDelegate和System.ValueType也。 还有更多吗?我在C#中找不到有关“特殊类”的任何信息。 此外,什么是如此特殊的课程,我们不能把它们作为一个泛型类型约束?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.