我想有一种方法可以从可为空的数据库列中解析一个枚举。我在下面编写了这个方法(并且必须将 T 限制为一个结构才能使其编译)。
它确实可以编译,但我认为它是错误的,因为枚举不是结构?如果是这样,我如何限制通用方法说我期待一个 ValueType 你不必向我抱怨“只有不可为空的值类型可能是 'System.Nullable' 的基础
private static T? ParseEnum<T>(DataRow row, string columnName)
where T : struct
{
T? value = null;
try
{
if (row[columnName] != DBNull.Value)
{
value = (T)Enum.Parse(
typeof(T),
row[columnName].ToString(),
true);
}
}
catch (ArgumentException) { }
return value;
}