AutoMapper DynamicMap对象与匿名类型

时间:2014-07-21 08:20:36

标签: c# .net dynamic automapper

在下面的简单场景中,为什么TestMethod1的输出是" test"并且TestMethod2的输出为空?此外,如果您更改顺序并运行TestMethod2,则两个方法都将输出null。

我刚刚开始使用AutoMapper而且我没有很多经验,我真的需要使用这个方法(使用对象作为参数)才能工作。有人可以向我解释为什么它会像这样工作,我能做些什么呢?

public partial class TestClass
{
    public string Test { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        TestMethod1();
        TestMethod2(new { Test = "test" });
    }

    public static void TestMethod1()
    {
        TestClass test = new TestClass();

        Mapper.DynamicMap(new { Test = "test" }, test);
        Console.Out.WriteLine(test.Test);
    }

    public static void TestMethod2(object obj)
    {
        TestClass test = new TestClass();

        Mapper.DynamicMap(obj, test);
        Console.Out.WriteLine(test.Test);
    }
}

1 个答案:

答案 0 :(得分:2)

而不是

TestClass test = new TestClass();

Mapper.DynamicMap(obj, test);

你可以使用

TestClass test = (TestClass)Mapper.DynamicMap(obj, obj.GetType(), typeof(TestClass));

在这两种情况下都使用它;即,不要创建TestClass的实例 - 而是让Automapper执行此操作

这不是一个直接的答案(但)更多的是一种解决方法;我不确定为什么我写的作品以及你所写的内容并没有 - 我正在进一步调查