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

标签 c# .net dynamic automapper

在下面的简单场景中,为什么 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/

相关文章:

c# - 标识符必须声明为 ORA-06550 和 PLS-00201

.net - 我应该转储所有 WebForms/ASP.NET MVC 和 WinForms 开发并转移到 Silverlight 吗?

c# - 从 Excel 导入数据 - .列名称中的(点)

c# - Windows 10 ScrollIntoView() 没有滚动到 ListView 中间的项目

c# - 在插件框架中使用抽象类作为契约

dynamic - 如何使用 Julia 1.5 在运行时动态加载模块(或脚本)

c# - .NET 中的模块化系统能够在运行时更改

java - 通过单击按钮创建 Imagebutton 的新实例

c# - 减法后计算剩余多边形的算法

c# - 单击 CheckBoxList 上的项目时需要显示一些内容