在下面的简单场景中,为什么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这样做)
这不是一个直接的答案(但)更多的是一种解决方法;我不确定为什么我写的作品和你写的不是 – 我正在进一步调查