У меня есть метод расширения, который работает нормально, чтобы отличать строковые значения в разных типах, что выглядит примерно так:
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?
Что мне не хватает?
Спасибо