我在使用反射时将对象属性转换为字符串时出现问题...
string value = Convert.ToString(typeof(T).GetProperty(ValueField).GetValue(data, null));
此抛出'对象与目标类型不匹配'。返回除字符串以外的任何类型?
答案 0 :(得分:3)
使用类型的内置ToString
方法,而不是调用Convert.ToString
。所有类型都有ToString
方法继承自object
,而Convert.ToString
仅适用于实现IConvertible
接口的类型。
string value =
typeof(T).GetProperty(ValueField).GetValue(data, null).ToString();
答案 1 :(得分:2)
如果由于某种原因您不想使用该属性的ToString
方法,则可以将T
限制为实现IConvertible
的类:
public string DoSomething<T>(object data) where T: IConvertible { ... }
答案 2 :(得分:2)
您不能将每个对象强制转换为字符串,但每个对象都有一个ToString方法。因此,您可以将代码更改为:
string value = typeof(T).GetProperty(ValueField).GetValue(data, null).ToString();