我有一个包含几个标志的XML,其中一些是无符号的32位整数,而另一些是无符号的64位整数。其中一些用逗号分隔的列表书写,而另一些用十六进制格式。从逗号分隔的列表或整数解析枚举标志
见这个例子:
<Color>Blue,Red</Color>
<Color>0xC</Color>
因为我不想写来解析每个枚举的方法,我决定用一个通用的方法。但Visual Studio不会让我构建解决方案。这里是我的方法:
public static T ParseFlags<T>(string value) where T : struct
{
T result = (T)((object)0);
string[] array;
// Remove white spaces and delimit string if it is comma-separated
if (ParseDelimitedString(value, ',', out array))
{
for (int i = 0; i < array.Length; i++)
{
T flag = (T)((object)0);
// Check if value is member of enumeration
if (Enum.TryParse<T>(array[i], out flag))
{
result |= (T)((object)flag);
}
}
}
else
{
switch (Type.GetTypeCode(Enum.GetUnderlyingType(typeof(T))))
{
// Remove hex characters and parse node's inner text
case TypeCode.UInt32:
result = (T)((object)ParseUint(value));
break;
case TypeCode.UInt64:
result = (T)((object)ParseUlong(value));
break;
}
}
return result;
}
该错误消息我得到的是:
的操作数错误1个操作 '| =' 不能应用于类型 'T' 和 'T'
有没有办法做到这一点?
不应该这样'结果| =(T)((对象)标志);'是这样,而不是'结果=(T) ((object)标志);' – MethodMan