zoukankan      html  css  js  c++  java
  • C# 对象互转

            /// <summary>
            /// 适用于初始化新实体
            /// </summary>
            static public T RotationMapping<T, S>(S s)
            {
                T target = Activator.CreateInstance<T>();
                var originalObj = s.GetType();
                var targetObj = typeof(T);
                foreach (PropertyInfo original in originalObj.GetProperties())
                {
                    foreach (PropertyInfo t in targetObj.GetProperties())
                    {
                        if (t.Name == original.Name)
                        {
                            t.SetValue(target, original.GetValue(s, null), null);
                        }
                    }
                }
                return target;
            }
            /// <summary>
            /// 适用于没有新建实体之间
            /// </summary>
            static public T RotationMapping<T, S>(T t, S s)
            {
                var originalObj = s.GetType();
                var targetObj = typeof(T);
                foreach (PropertyInfo sp in originalObj.GetProperties())
                {
                    foreach (PropertyInfo dp in targetObj.GetProperties())
                    {
                        if (dp.Name == sp.Name)
                        {
                            dp.SetValue(t, sp.GetValue(s, null), null);
                        }
                    }
                }
                return t;
            }
            static public void AutoMapping<S, T>(S s, T t)
            {
                PropertyInfo[] pps = GetPropertyInfos(s.GetType());
                Type target = t.GetType();
    
                foreach (var pp in pps)
                {
                    PropertyInfo targetPP = target.GetProperty(pp.Name);
                    object value = pp.GetValue(s, null);
    
                    if (targetPP != null && value != null)
                    {
                        targetPP.SetValue(t, value, null);
                    }
                }
    
            }
    
            static public PropertyInfo[] GetPropertyInfos(Type type)
            {
                return type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
            }
  • 相关阅读:
    归并排序
    汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI、汉诺塔VII
    Uncle Tom's Inherited Land
    汉诺塔III
    汉诺塔X
    Frosh Week
    hdu 1007最近点对问题
    POJ1579:Function Run Fun
    Hdu1163 Eddy's digitai Roots(九余数定理)
    放苹果问题
  • 原文地址:https://www.cnblogs.com/hofmann/p/11756933.html
Copyright © 2011-2022 走看看