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 關注
- 463 瀏覽
添加回答
舉報