2

AutoMapper 4.1.1 (NuGet の最新の安定版リリース) を使用していますReverseMapが、オープン ジェネリックでの使用CreateMapが機能しないようです。

サンプルプログラム:

static void Main(string[] args)
{
    //Mapper.CreateMap(typeof(A<>), typeof(B<>)).ReverseMap(); // Doesn't work.
    Mapper.CreateMap(typeof(A<>), typeof(B<>)); // Works.
    Mapper.CreateMap(typeof(B<>), typeof(A<>)); // Works.

    Mapper.CreateMap<AData, BData>().ReverseMap();

    var b = new B<BData> { Data = new BData { Info = "Test" } };
    var a = Mapper.Map<A<AData>>(b);
}

public class A<T>
{
    public T Data { get; set; }
}

public class B<T>
{
    public T Data { get; set; }
}

public class AData
{
    public string Info { get; set; }
}

public class BData
{
    public string Info { get; set; }
}

その行を使用するとReverseMap、次の例外が発生します。

タイプ マップ構成が欠落しているか、サポートされていないマッピングです。

マッピング タイプ: B`1 -> A`1 ConsoleApplication64.Program+B`1[[ConsoleApplication64.Program+BData, ConsoleApplication64, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] -> ConsoleApplication64.Program+A `1[[ConsoleApplication64.Program+AData, ConsoleApplication64, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]

宛先パス: A`1

ソース値: ConsoleApplication64.Program+B`1[ConsoleApplication64.Program+BData]

私は何か間違ったことをしていますか、それとも実際にReverseMapオープンジェネリックで使用できないのでしょうか?

4

0 に答える 0