c# – AutoMapper DynamicMap对象与匿名类型

在下面的简单场景中,为什么TestMethod1的输出是“test”而TestMethod2的输出是null?此外,如果您更改顺序并运行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);
    }
}

解决方法:

代替

TestClass test = new TestClass();

Mapper.DynamicMap(obj, test);

您可以使用

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

在两种情况下都使用它;即不要创建TestClass的实例 – 而是让Automapper这样做)

这不是一个直接的答案(但)更多的是一种解决方法;我不确定为什么我写的作品和你写的不是 – 我正在进一步调查

上一篇:c# – 简单的注入器注册自动化器


下一篇:c# – 具有相同类型的嵌套Dtos的Dto失败