C#:当T为“String”时,无法将字符串转换为Generic T?

时间:2017-09-16 22:12:58

标签: c# generics

当T提供解析(字符串)方法时,我有以下方法尝试将字符串解析为类型T:

public static bool ParseToType<T>(string s, out T parsedValue)
    {
         if (typeof(T) == typeof(string)) {
            parsedValue =  (T) s;  //doesn't compile.
            return true;

        }
        if (!IsParseable(typeof(T)))
        {
            parsedValue = default(T);
            return false;
        }

        var meth = typeof(T).GetRuntimeMethod("Parse", new Type[] { typeof(String) });
        try
        {
            parsedValue = (T)meth.Invoke(typeof(T), new String[] { s });
        }
        catch (  Exception e) {
            parsedValue = default(T);
            return false;
        }
        return true;
    }

但是当T的类型也是字符串时,我需要处理特殊情况。字符串不提供“解析”方法,所以我只想返回提供的字符串。

然而,当T本身是字符串时,我无法弄清楚如何将s转换为T.

0 个答案:

没有答案