c# - 映射具有不同属性的两个不同对象

标签 c# .net casting

我有一个具有一组属性的类,例如:

class Employee 
{
    string Id {get ; set ; }
    string Name {get ; set ; }
    string Lastname {get ; set ; }
    string email {get ; set ; }
}

我有另一个对象 - 我从第三方获取数据作为 API 字符串。我使用 NewtonSoft Json 反序列化它们。它们的结构看起来像这样:

class ThirdPartyEmployee
{
    string EmpId {get ; set ; }
    string fName {get ; set ; }
    string LName {get ; set ; }
    string emailID {get ; set ; }
    string Phonenumber {get ; set ; }
}

为简单起见 - 我无法更改这两个类的属性。

现在的问题是,当我收到 json 对象时,

List<Employee> obj1 = new List<Employee>();
List<ThirdPartyEmployee> obj2 = JsonConvert.DeserializeObject<List<ThirdPartyEmployee>>(JsonConvert.SerializeObject(responseString));

现在我需要将 obj2 转换为 obj1。虽然我可以通过以下方式手动完成:

foreach (var currObj2 in obj2) 
{
    Employee  employee = null ; 

    employee .Id = currObj2 .EmpId; 
    employee.Name = currObj2.fName;
    employee.Lastname = currObj2.LName;
    employee.email = currObj2.emailID;
    obj1.add(employee); 
}

有没有更简单的方法使用某种映射机制来做到这一点?

虽然我给出了一个更简单的例子,但实际情况要复杂得多,有子对象和更多属性。

最佳答案

看看AutoMapper,我的 friend ,就是你要找的http://automapper.org/

这里有个老问题可能对你有帮助

How to handle custom Properties in AutoMapper

关于c# - 映射具有不同属性的两个不同对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41819568/

相关文章:

c# - 在 C# 3.0 中缩小 XML 的最佳方法

c# - 将另一个应用程序置于最前面

c# - 通过代码包含程序集? C#

c++ - 通过更改类型在函数之间传递模板对象

c# - 如何警告 Console.Write() 中的错误参数编号?

c# - 如何从 Razor 切换到普通的旧 HTML?

c# - 对值类型的困惑

c# - 可视化 .NET dll 中的类结构

sql - 如何在 Firebird 中四舍五入一个数字?

c - printf ("%p") 并转换为 (void *)