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);
            }
  • 相关阅读:
    第一个 Python 程序
    Qt之字体文件(TTF)
    Memcached
    Qt之QtSoap(访问WebService)
    Crypto++编译使用
    Memcached
    Windows下编译OpenSSL
    基于Core Text实现的TXT电子书阅读器
    java代码获取jdbc链接properties
    ext树表+ZeroClipboard复制链接功能
  • 原文地址:https://www.cnblogs.com/hofmann/p/11756933.html
Copyright © 2011-2022 走看看