我知道这个问题可能已被问过一千次,但我们没有设法找到我在类似线程上寻求的解决方案。
我有以下方法将对象类型转换为方法调用者提供的泛型类型。
public static T ConvertValue<T>(object value)
{
//conversion code
}
我正在尝试使用此方法使用Reflection转换对象属性的值类型。
假设我们有以下对象:
SomeClass someObject;
PropertyInfo myProperty = someObject.GetType().GetProperty("somePropertyName")
以下代码可以正常使用:
string propertyValue = ConvertValue<string>(myProperty.GetValue(someObject));
然而,这迫使我写下所需的转换类型,而我想做的是:
Type myPropertyType = prop.PropertyType;
var propertyValue = ConvertValue<myPropertyType>(myProperty.GetValue(someObject));
我理解编译器不会出于各种原因使用它,但我无法为此提出一个简单的解决方案..
我发现的大多数解决方案建议将Type作为参数传递并返回对象类型。
public static object ConvertValue(object value, Type type)
{
//conversion code
}
但这似乎打败了整个目的,因为我必须对输出进行投射......