在下面的简单场景中,为什么 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);
}
}
最佳答案
代替
TestClass test = new TestClass();
Mapper.DynamicMap(obj, test);
你可以使用
TestClass test = (TestClass)Mapper.DynamicMap(obj, obj.GetType(), typeof(TestClass));
在这两种情况下都使用它;即不要创建 TestClass
的实例 - 而是让 Automapper 这样做)
这还不是一个直接的答案,而是一个解决方法;我不确定为什么我写的有效而你写的无效 - 正在进一步调查
关于c# - AutoMapper DynamicMap 对象与匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24860535/