我正在尝试创建一个通用的解析方法,但我被卡住了 我希望能够接受两种类型,一种是type1的对象,一种是默认值type2 然后我想尝试将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;
}
答案 0 :(得分:3)
您可以将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");