c#泛型TryParse類型轉換

來源:互聯網
上載者:User

標籤:wro   creat   val   reflect   pre   odi   public   div   value   

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;using System.Data;namespace ConsoleApplication11{    class Program    {        static void Main(string[] args)        {            var dt = new DataTable();            dt.Columns.Add("c1", typeof(string));            var row = dt.NewRow();            row["c1"] = "abc";            var c = getDataFromDBField<double>(row["c1"], 2);   //返回2            var d = getDataFromDBField<object>(row["c1"], 2);   //返回"abc"        }        private static T getDataFromDBField<T>(object obj, T defaultValue = default(T))        {            if (obj == null || obj == DBNull.Value)                return defaultValue;            Type t = typeof(T);            var tryParse = t.GetMethod("TryParse", BindingFlags.Public | BindingFlags.Static, Type.DefaultBinder                , new Type[] { obj.GetType() , t.MakeByRefType() }                , new ParameterModifier[] { new ParameterModifier(2) });            if (tryParse != null)            {                var parameters = new object[] { obj, Activator.CreateInstance(t) };                bool success = (bool)tryParse.Invoke(null, parameters);                if (success)                    return (T)parameters[1];                else                    return defaultValue;            }            return (T)Convert.ChangeType(obj, typeof(T));        }    }}

 

c#泛型TryParse類型轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.