使用默认值的通用解析

时间:2014-05-08 16:39:16

标签: c# .net generics

我正在尝试创建一个通用的解析方法,但我被卡住了 我希望能够接受两种类型,一种是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;
}

1 个答案:

答案 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");