将小属性对象映射到大属性对象

时间:2016-06-06 00:48:18

标签: c# .net

我有两个具有一些属性的对象,如下所示:

#!/usr/bin/env python

现在您可以看到,我想将public class Person { public string DoctorId { get; set ;} public string DoctorName { get; set;} public string PersonId { get; set;} public string PersonName { get; set;} } public class SaveRequest { public string DoctorName { get; set;} public string PersonName { get; set;} public string PersonId { get ; set;} } 映射到SaveRequest对象。我们通过Person执行此操作,这是关键,也是我的要求,如您所见,并非所有属性都在PersonId中,它只是人和医生的名称,而SaveRequest仅用于主键...

请帮我说一下如何使用小代码在C#中映射这些内容。

2 个答案:

答案 0 :(得分:3)

您可以尝试使用AutoMapper

之类的映射器

使用automapper,您必须

  • 使用nuGet(PM> Install-Package AutoMapper
  • 添加引用
  • 然后使用Mapper.Initialize(cfg => cfg.CreateMap<Person, SaveRequest>());
  • 创建地图
  • 然后,只需使用映射器即可:SaveRequest sr = Mapper.Map<SaveRequest>(person);其中personPerson的实例
  • 此处有更多信息(https://github.com/AutoMapper/AutoMapper/wiki/Flattening

或者您可以构建自己的自定义Mapping方法,该方法接收Person并将数据返回/映射到SaveRequest

或者你可以简单地使用Person并忽略你想要使用的DoctorId属性SaveRequest

答案 1 :(得分:1)

Automapper是一个旨在使这类事物变得更容易的库,但它更适合在项目中的多个区域使用,而不仅仅是一个孤立的案例(否则它需要更长的时间)设置它比它值得)。 http://automapper.org/

旧学校的方式是手工完成,财产和财产。

可以使用反射来编写一个例程来检查属性名称并匹配这些值,但是如果你走得那么远,你可能只是使用Automapper,那是不是它的功能(以及更多功能) )。