[英]Automapper Dynamic Resolver's
我正在嘗試在 automapper 之上創建一個抽象層,它使用戶能夠為他們映射的每個屬性動態添加自定義規則。
鑒於模型
public class Entity
{
public int Index { get; set; }
}
public class DTO
{
public int Count { get; set; }
}
我們可以配置 Automapper 來映射實體,如下所示:
//sorry this is pseudo coded
cfg.CreateMap<Entity, DTO>()
.ForMember(dest => dest.Index,
opt => opt.ResolveUsing<IndexResolver>());
public class IndexResolver: ValueResolver<DTO, int>,
{
protected override string ResolveCore(DTO source)
{
return source.Count - 1;
}
}
這是有效的,因為我們將規則映射到值解析器,但是如果我想在運行時創建規則是可能的。 我希望能夠配置這樣的東西:
cfg.CreateMap<Entity, DTO>()
.ForMember(dest => dest.Index,
opt => opt.Resolver(d => d.Count - 1);
有沒有辦法可以添加帶有表達式的解析器,這樣我就不需要從 ValueResolver 繼承?
我的第一個想法是創建一個通用的自定義解析器,它在其構造函數中使用一個表達式。 然后你應該能夠做到:
.ResolveUsing(new LambdaResolver(d => d.Count - 1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.