C#之轉換兩個不同類型但是成員相同的對象


/// <summary>
        /// 轉換兩個不同類型但是成員相同的對象
        /// </summary>
        /// <typeparam name="T">目標對象</typeparam>
        /// <param name="source">待轉換對象</param>
        /// <returns></returns>
        public static T CopySameFieldsObject<T>(Object source)
        {
            Type srcT = source.GetType();
            Type destT = typeof(T);

            // 構造一個要轉換對象實例
            Object instance = destT.InvokeMember("", BindingFlags.CreateInstance, null, null, null);

            // 這里指定搜索所有公開和非公開的字段
            FieldInfo[] srcFields = srcT.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

            // 將源頭對象的每個字段的值分別賦值到轉換對象里,因為假定字段都一樣,這里就不做容錯處理了
            foreach (FieldInfo field in srcFields)
            {
                destT.GetField(field.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).
                    SetValue(instance, field.GetValue(source));
            }

            return (T)instance;
        }

 


免責聲明!

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



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