簡體   English   中英

Automapper 動態解析器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM