我正在尝试创建一个通用的解析方法,但是我遇到了麻烦。
我希望能够采用两种类型,即类型1的对象和类型2的默认值。
然后,我想尝试将type1对象解析为type2对象,如果这不起作用,则返回默认值。
显然,以下代码无效,无法正常工作。但这就是我要的。
有谁知道如何在C#中实现这一目标?
public static K TryGenericParse<T, K>(T objectToParse, K defaultValue)
{
K returnValue;
if (!K.TryParse(objectToParse, out returnValue))
returnValue = defaultValue;
return returnValue;
}
最佳答案
您可以为此使用TypeConverter。您可以使用TypeDescriptor的静态方法GetConverter检索类型转换。
public static TOuput TryGenericParse<TInput, TOuput>(TInput input)
{
var converter = TypeDescriptor.GetConverter(typeof(TOuput));
if (!converter.CanConvertFrom(typeof (TInput)))
return default(TOuput);
return (TOuput)converter.ConvertFrom(input);
}
bool bl = TryGenericParse<string, bool>("True");
double dbl = TryGenericParse<string, double>("3.222");