我有一个扩展方法可以正常地将字符串值转换为各种类型,它看起来像这样:
public static T ToType<T> (this string value, T property)
{
object parsedValue = default(T);
Type type = property.GetType();
try
{
parsedValue = Convert.ChangeType(value, type);
}
catch (ArgumentException e)
{
parsedValue = null;
}
return (T)parsedValue;
}
但是,我对调用该方法时的外观不满意:
myObject.someProperty = stringData.ToType(myObject.someProperty);
仅仅为了获取属性的类型而指定属性似乎是多余的。我宁愿使用这样的签名:
public static T ToType<T> (this string value, Type type) { ... }
并让 T 最终成为类型的类型。这将使调用更清晰:
myObject.someProperty = stringData.ToType(typeof(decimal));
但是,当我尝试以这种方式调用时,编辑器抱怨无法从使用情况中推断出扩展方法的返回类型。我可以将 T 链接到 Type 参数吗?
我错过了什么?
谢谢