将源实体转换到空的实体类中

Posted mact

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将源实体转换到空的实体类中相关的知识,希望对你有一定的参考价值。

这是一个封装的实体转换类

应用场景一张主表一张副表,副表为主表的备份表

//将源实体转换到空的实体类中  调用

主表实体类 entity = new  主表实体类();

EntityCoverter.Covert<主表实体类, 副表实体类>(entity);

//将源实体转换到非空的实体中 调用

主表实体类 entity = new  主表实体类();

 副表实体类 hazardInfo = new   副表实体类();

  EntityCoverter.Covert<主表实体类 , 副表实体类>(entity, hazardInfo);


/// <summary>
/// 实体转换类
/// </summary>
public class EntityCoverter
{
    /// <summary>
    /// 将源实体转换到空的实体类中
    /// </summary>
    /// <typeparam name="T1"></typeparam>
    /// <typeparam name="T2"></typeparam>
    /// <param name="source"></param>
    /// <returns></returns>
    public static T2 Covert<T1, T2>(T1 source)
    {
        T2 result = default(T2);

        PropertyInfo[] pi = typeof(T2).GetProperties();

        PropertyInfo[] pi1 = typeof(T1).GetProperties();

        result = Activator.CreateInstance<T2>();

        for (int i = 0; i < pi.Length; i++)
        {
            PropertyInfo temp = pi1.Where(t => t.Name == pi[i].Name).FirstOrDefault();
            if (temp != null)
            {
                try
                {
                    pi[i].SetValue(result, temp.GetValue(source, null), null);
                }
                catch (Exception ex)
                {

                }
            }
        }
        return result;
    }

    /// <summary>
    /// 将源实体转换到非空的实体中
    /// </summary>
    /// <typeparam name="T1"></typeparam>
    /// <typeparam name="T2"></typeparam>
    /// <param name="source"></param>
    /// <param name="destination"></param>
    /// <returns></returns>
    public static T2 Covert<T1, T2>(T1 source, T2 destination)
    {
        PropertyInfo[] pi = typeof(T2).GetProperties();

        PropertyInfo[] pi1 = typeof(T1).GetProperties();

        for (int i = 0; i < pi.Length; i++)
        {
            PropertyInfo temp = pi1.Where(t => t.Name == pi[i].Name).FirstOrDefault();
            if (temp != null)
            {
                try
                {
                    pi[i].SetValue(destination, temp.GetValue(source, null), null);
                }
                catch
                {
                }
            }
        }
        return destination;
    }
}

 

以上是关于将源实体转换到空的实体类中的主要内容,如果未能解决你的问题,请参考以下文章

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

JAVA中,类、对象、实体、实体类、实体对象之间存在怎样的联系??请高手做形象的解释。

AutoMapper C#实体映射

MySql 字段类型对应 Java 实体类型

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

如何根据数据库的字段动态创建实体类? 用java啊~ 最好给点源码和实例