通過反射把一個類的屬性的值賦值給另一個類


兩個類我就不創建了,具體實現方法如下:

        /// <summary>
        /// 通過反射把一個類的屬性的值賦值給另一個類
        /// </summary>
        /// <typeparam name="D"></typeparam>
        /// <typeparam name="S"></typeparam>
        /// <param name="s"></param>
        /// <returns></returns>
        public static D Mapper<D, S>(S s)
        {
            D d = Activator.CreateInstance<D>();
            try
            {
                var sType = s.GetType();
                var dType = typeof(D);
                foreach (PropertyInfo sP in sType.GetProperties())
                {
                    foreach (PropertyInfo dP in dType.GetProperties())
                    {
                        if (dP.Name == sP.Name)
                        {
                            dP.SetValue(d, sP.GetValue(s));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return d;
        }

其中D代表新類,S代表原來的類。

首先實例化D類,sType代表獲取S類的屬性,dtype獲取D類的屬性,然后利用GetProperties()方法獲取類別下的每一個屬性,

如果D類下的屬性和S類下的屬性相同,則把S類屬性相對應的value值賦值給D類隊形的屬性。(利用Getvalues()獲取),

調用如下:

Mapper<User, UserInfo>(UserInfo u);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM