将Reflected属性转换为String

时间:2009-10-30 14:29:18

标签: c# .net reflection

我在使用反射时将对象属性转换为字符串时出现问题...

string value = Convert.ToString(typeof(T).GetProperty(ValueField).GetValue(data, null));

此抛出'对象与目标类型不匹配'。返回除字符串以外的任何类型?

3 个答案:

答案 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();