c# - Automapper - 为什么不使用 SourceMember 属性进行映射
问题描述
为什么 Automapper 不使用 SourceMember 属性映射到 Employee?如果我将名称与名称匹配,则它可以工作:
不起作用:
https ://dotnetfiddle.net/yM9eiQ
是否有效:
https ://dotnetfiddle.net/GhpF9X
using AutoMapper;
using AutoMapper.Configuration.Annotations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AutoMapperConsole1
{
[AutoMap(typeof(Person))]
class Employee
{
[SourceMember("FirstName")]
public string GivenName { get; set; }
[SourceMember("LastName")]
public string SurName { get; set; }
public decimal Salary { get; set; }
}
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
//http://automapper.readthedocs.io/en/latest/Getting-started.html
Person p = new Person();
p.FirstName = "John";
p.LastName = "Smith";
//Create a map
//Mapper.Initialize(cfg => cfg.CreateMap<Person, Employee>());
//or
var config = new MapperConfiguration(cfg => cfg.CreateMap<Person, Employee>());
//var mapper = config.CreateMapper();
//or
var mapper = new Mapper(config);
var dto = mapper.Map<Employee>(p);
//or
//Employee dto2 = Mapper.Map<Employee>(p);
Console.Write(dto.GivenName);
}
}
}
解决方案
属性映射依赖于AddMaps
. 对于给定的映射,属性映射CreateMap
是互斥的。但是您可以在相同的配置中拥有流利的地图和属性地图。
推荐阅读
- postman - 从提琴手导出到邮递员
- git - 在远程 GIT 存储库上推送/创建新目录而不克隆整个存储库,只需使用 git init 初始化
- javascript - Camera.getAvailableCameraTypesAsync() 在网络和本机上不起作用
- android - 如何解密 Android DownloadManager 下载的文件?
- java - ajax p:Calendar PrimeFaces 6.1 的问题
- arrays - 在 Ruby/RoR 中对多维数组的子数组进行分组/过滤
- java - OpenCV inRange 找不到任何颜色
- c# - 连接服务 .net 核心的客户端证书
- go - impl 函数的参数不足
- swiftui - 如何在视图上使用 SwiftUI 检测向上、向下、向左和向右滑动