在运行时必须实现IConvertible我收到以下错误对象试图返回一个元组
“对象必须实现IConvertible”
调用函数
lboxBuildingType.SelectedIndex = pharse.returning<int>xdoc.Root.Element("BuildingTypeIndex").Value);
public static T returning<T>(object o)
{
Tuple<bool, T, object> tmp;
switch (Type.GetTypeCode(typeof(T)))
{
////blah blah blah
case TypeCode.Int32:
tmp= (Tuple<bool,T,object>)Convert.ChangeType(I(o.ToString())), typeof(T)); // error
break;
////blah blah blah
}
}
private static Tuple<bool, Int32, Object> I(object o)
{
int i;
bool b;
Int32.TryParse(o.ToString(), out i);
b = (i == 0);
return new Tuple<bool, Int32, object>(b, i, o);
}
的目的代码是通过<T>("15")
并让它产生tuple<Bool,T,object>
这将是tuple<true, 15, "15">
它的错误了,我已经有//错误
你可以使用泛型类型约束:http://stackoverflow.com/questions/1096568/how-can-i-use-interface-as -ac-sharp-generic-type-constraint – Sven
使用List <>对象而不是Tuple <>。 List <>对象具有IConvertible的内置方法。 – jdweng
@Sven通用类型约束不能解决这个问题。 – Servy