将Type变量传递给泛型方法

时间:2017-05-22 10:49:39

标签: c# generics

我知道这个问题可能已被问过一千次,但我们没有设法找到我在类似线程上寻求的解决方案。

我有以下方法将对象类型转换为方法调用者提供的泛型类型。

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
}

但这似乎打败了整个目的,因为我必须对输出进行投射......

0 个答案:

没有答案