我正在尝试创建一个通用的解析方法,但是我遇到了麻烦。
我希望能够采用两种类型,即类型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");

10-04 20:36