zoukankan      html  css  js  c++  java
  • 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;
            }
  • 相关阅读:
    java如何编写多线程
    Java调用dll动态库
    HashMap源码解析
    LinkedList源码解析
    ArrayList源码解析
    springboot配置cxf
    java生成二维码
    原生js--跨域消息传递
    原生js--应用程序存储和离线web应用
    原生js--userData
  • 原文地址:https://www.cnblogs.com/lfxiao/p/6841639.html
Copyright © 2011-2022 走看看