我有两个具有一些属性的对象,如下所示:
#!/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#中映射这些内容。
答案 0 :(得分:3)
您可以尝试使用AutoMapper
之类的映射器使用automapper,您必须
PM> Install-Package AutoMapper
)Mapper.Initialize(cfg => cfg.CreateMap<Person, SaveRequest>());
SaveRequest sr = Mapper.Map<SaveRequest>(person);
其中person
是Person
的实例或者您可以构建自己的自定义Mapping方法,该方法接收Person
并将数据返回/映射到SaveRequest
或者你可以简单地使用Person并忽略你想要使用的DoctorId
属性SaveRequest
答案 1 :(得分:1)
Automapper是一个旨在使这类事物变得更容易的库,但它更适合在项目中的多个区域使用,而不仅仅是一个孤立的案例(否则它需要更长的时间)设置它比它值得)。 http://automapper.org/
旧学校的方式是手工完成,财产和财产。
可以使用反射来编写一个例程来检查属性名称并匹配这些值,但是如果你走得那么远,你可能只是使用Automapper,那是不是它的功能(以及更多功能) )。