我有兩個應用程式 A 和 B,我在它們之間創建了另一個 API 實用程式來為每個客戶端動態映射屬性,然后發送請求。我在JSON.
例如,我有兩個客戶。
客戶端 A想要將AEmployee應用程式的屬性與B應用程式映射,如下所示:
應用程式 A 員工類 應用程式 B 員工類
FirstName LastName <---------> Name
Description <---------> Title
Title <---------> JobTitle
客戶端 B想要將AEmployee應用程式的屬性與B應用程式映射,如下所示:
應用程式 A 員工類 應用程式 B 員工類
FirstName LastName <---------> Name
Description <---------> JobTitle
Title <---------> Title
我還有一些其他欄位需要根據客戶的要求進行映射。
我怎樣才能做到這一點?這樣我就可以從資料庫中獲取映射詳細資訊并相應地映射它們
我嘗試了 automapperForMember方法,但我不知道如何從資料庫中傳遞值?
uj5u.com熱心網友回復:
讓我們設定場景,假設您在員工記錄中有客戶(A 或 B)的資訊。
資料庫物體,
Employee:
FirstName,
LastName
Description,
Title,
ClientId
視圖模型,
EmployeeModel:
Name,
Title,
JobTitle
創建自定義決議器,
public class TitleResolver : IValueResolver<Employee, EmployeeModel, string>
{
public string Resolve(Employee source, EmployeeModel destination, string title, ResolutionContext context)
{
if(source.ClienId == "A") // as an example, you could do something different.
return source.Description;
return source.Title;
}
}
public class JobTitleResolver : IValueResolver<Employee, EmployeeModel, string>
{
public string Resolve(Employee source, EmployeeModel destination, string title, ResolutionContext context)
{
if(source.ClienId == "A")
return source.Title;
return source.Description;
}
}
配置映射時,
var configuration =new MapperConfiguration(cfg => cfg.CreateMap<Employee, EmployeeModel>()
.ForMember(dest => dest.Title, opt => opt.MapFrom<TitleResolver>())
.ForMember(dest => dest.JobTitle, opt => opt.MapFrom<JobTitleResolver>()));
讓我知道這是否有意義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530293.html
標籤:C#。网asp.net 核心.net-core自动映射器
