AutoMapper动态映射对象 vs 匿名类型

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

3

替代

TestClass test = new TestClass();

Mapper.DynamicMap(obj, test);

你可以使用


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

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

这并不是一个直接的答案(但是)更像是一个解决方法; 我不确定为什么我写的代码可以工作而你写的不能 - 我正在进一步调查


谢谢,你的解决方法很有效!在我的情况下,我需要映射到现有对象,但这个方法也可以:Mapper.DynamicMap(obj, test, obj.GetType(), typeof(TestClass))。非常感谢你的回答。 - Brazol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接