在AutoMapper中使用组合地图

时间:2018-03-02 16:53:57

标签: c# automapper function-composition

假设我的AutoMapper配置知道如何从T1类型映射到T2类型,从T2映射到T3类型。然后我有以下内容。它有效:

public static class MapperExtensions
{
    public static T3 MapVia<T1, T2, T3>(this IMapper mapper, T1 t1) {
        var t2 = mapper.Map<T2>(t1);
        var t3 = mapper.Map<T3>(t2);
        return t3;
    }
    /// <summary> The calling code needs to ensure that t1 is of a type that the mapper knows how to map to type T2.</summary> 
    public static T3 MapVia<T2, T3>(this IMapper mapper, object t1) {
        var t2 = mapper.Map<T2>(t1);
        var t3 = mapper.Map<T3>(t2);
        return t3;
    }
}

我的问题是是否可以绕过中间类型?我希望能够在我的配置中做一些事情来告诉它“生成从T1到T3的地图,这是地图从T1到T2以及你的地图从T2到T3的组成。”然后我可以正常地从T1映射到T3。

有时T2很大,这可能会导致性能问题。还有一些情况下T2不是特别大。

1 个答案:

答案 0 :(得分:0)

将Lucian Bargaoanu的评论转换为答案:没有内置方法可以做到这一点。