首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在automapper中映射内部类

如何在automapper中映射内部类
EN

Stack Overflow用户
提问于 2017-04-28 10:45:57
回答 1查看 1.7K关注 0票数 2

我试图用automapper在内部类中传输字符串的信息。怎样才能得到D的值?我的第一次尝试是:

代码语言:javascript
运行
复制
C = new C { D = "123"}

这在网络小提琴中失败了,那么什么才是正确的方法呢?

是否可以将内部类映射到另一个对象,或者是否有必要更改映射以使其正常工作?

代码语言:javascript
运行
复制
using System;
using AutoMapper;

public class Foo
{
    public string A { get; set; }
    public int B { get; set; }  
    public class C
    {
        public string D {get;set;}
    }
}

public class Bar
{
    public string A { get; set; }
    public int B { get; set; }
    public class C 
    {
        public string D {get;set;}
    }
}

public class Program
{
    public static void Main()       
    {
        Mapper.CreateMap<Foo,Bar>();

        var foo = new Foo { A="test", B=100500}; //how to get c/d?

        var bar = Mapper.Map<Bar>(foo);

        Console.WriteLine("foo type is {0}", foo.GetType());
        Console.WriteLine("bar type is {0}", bar.GetType());

        Console.WriteLine("foo.A={0} foo.B={1}", foo.A, foo.B);
        Console.WriteLine("bar.A={0} bar.B={1}", bar.A, bar.B);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 10:51:27

这里没什么可描绘的。您有嵌套类声明。这不是数据。您应该具有嵌套类类型的字段或属性:

代码语言:javascript
运行
复制
public class Foo
{
    public string A { get; set; }
    public int B { get; set; }
    public C Value { get; set; } // add same to Bar class
    public class C
    {
        public string D { get; set; }
    }
}

接下来,需要在嵌套类之间进行映射:

代码语言:javascript
运行
复制
Mapper.CreateMap<Foo.C,Bar.C>();

和地图数据:

代码语言:javascript
运行
复制
var foo = new Foo { A ="test", B = 100500, Value = new Foo.C { D = "foo" }};

制图:

代码语言:javascript
运行
复制
var bar = Mapper.Map<Bar>(foo);

在映射bar对象之后,它将具有以下值:

代码语言:javascript
运行
复制
{
  "A": "test",
  "B": 100500,
  "Value": {
    "D": "foo"
  }
}

进一步阅读:嵌套类型最佳实践

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43678329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档