• 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);
            }
  • 相关阅读:
    表格标签
    图片标签
    超链接标签
    媒体标签
    实体标签
    html常用的标签
    头信息的作用
    【bzoj5017】[Snoi2017]炸弹 线段树优化建图+Tarjan+拓扑排序
    【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛
    【bzoj4010】[HNOI2015]菜肴制作 拓扑排序+堆
  • 原文地址:https://www.cnblogs.com/hofmann/p/11756933.html
Copyright © 2020-2023  润新知