C# MethodInfo 調用有 Out 參數的方法

摘要:C# MethodInfo Invoke 有 Out 參數的方法

之前把TryParse的方法寫成擴充方法,後來忘了整到目前使用的類別庫中,避免再熊熊忘記,先記錄一下

  public static T TryParse<T>(this string value)
        {
            List<MethodInfo> methods = typeof(T).GetMethods(BindingFlags.Static | BindingFlags.Public).
                Where(p => p.Name.ToLower() == "tryparse").ToList();
            if (methods.Count > 0)
            {
                try
                {
                    MethodInfo m = methods[0];
                    object[] parameters = new object[] { value, null };
                    bool result = (bool)m.Invoke(null, parameters);
                    if (result)
                    {
                        return (T)parameters[1];
                    }
                }
                catch
                {
                    return default(T);
                }
            }
            return default(T);
        }