4 回答

TA贡献1804条经验 获得超2个赞
它们是互联网上的许多映射器库。仅举几例
自动映射器
映射器
发射映射器
他们都有自己的优点和缺点。我个人觉得编写自己的映射器方法是值得的,因为您将完全控制自己编写的内容。
我同意这可能需要一些时间,但不会花这么长时间。

TA贡献1883条经验 获得超3个赞
由于LeadDto并LeadCustomer取决于Lead:
一种选择是添加一个构造函数,并将LeadDto对象作为参数并映射到属性。LeadCustomerLead
另一种选择是创建静态扩展方法。
public static LeadDto ToLeadDto(this Lead lead)
{
return new LeadDto(){
this.Id = lead.Id;
// Etc..
}
}
然后你可以使用像
LeadDto myObj = someLead.ToLeadDto();
另一种选择是使用诸如 AutoMapper 之类的库。我从来没有使用过它,并且对于您声明的需求来说太过分了,IMO。

TA贡献1826条经验 获得超6个赞
一个简单直接的方法可能是在 Lead 类上有一个函数来返回您需要的对象。
public class Lead
{
//// your properties
public LeadDto GetOtherObject()
{
LeadDto object = new LeadDto();
////Map properties from this to object
return object;
}
}
否则,如果上述方法在给定的上下文中似乎不正确,则您可以使用静态实用程序功能。
public static class Utility
{
public static LeadDto GetOtherObject(Lead leadObject)
{
LeadDto object = new LeadDto();
////Map properties from leadObject to object
return object;
}
}
如果 的耦合LeadDto严格只与 Lead 耦合,则可以Lead在 的构造函数中有一个对象作为参数本身LeadDto。
在将属性从 Lead 映射到 LeadDto 时,请确保您考虑LeadPriority并LeadStatus谨慎,因为它们可能会根据它们是结构还是类而以不同方式工作。

TA贡献1794条经验 获得超8个赞
正如@G_S 所建议的那样,我使用了如下所示的自动映射器 -
CreateMap<Lead, LeadDto>()
.ForMember(desc => desc.LeadCustomer, opt => opt.ResolveUsing(src =>
{
return new LeadCustomer()
{
Id = src.LeadCustomerId,
FirstName = src.FirstName,
LastName = src.LastName,
EmailAddress = src.EmailAddress,
MobileNo = src.MobileNo
};
}));
- 4 回答
- 0 关注
- 437 浏览
添加回答
举报