AutoMapper DynamicMap对象vs匿名类型

本文关键字:类型 vs DynamicMap 对象 AutoMapper | 更新日期: 2023-09-27 18:14:04

在以下简单的场景中,为什么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);
    }
}

AutoMapper DynamicMap对象vs匿名类型

代替

TestClass test = new TestClass();
Mapper.DynamicMap(obj, test);

可以用

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

在两种情况下都使用这个;例如,不要创建TestClass的实例——而是让Automapper来做)

这不是一个直接的答案,但更多的变通;我不确定为什么我写的有用而你写的不行——我正在进一步调查