C# NetCore AutoMapper 忽略映射属性

在这篇文章中,我将向你展示如何通过AutoMapper自动映射来忽略属性。假设源和目标都有一个同名的属性,但用于表示不同的信息,那么我们肯定不希望自动映射该属性。我们可以在AutoMapper中创建映射时进行如下配置。

var config = new MapperConfiguration(cfg => { 
    cfg.CreateMap<Source, Destination>().ForMember(x =>x.DestinationPropertyName, opt => opt.Ignore());
});

示例:

var config = new MapperConfiguration(cfg => { 
    cfg.CreateMap<Person, PersonVM>().ForMember(x =>x.Name, opt => opt.Ignore());
});

由于AutoMapper支持FluentAPI,如果忽略多个属性,则可以多次调用FormMember方法,代码如下:

var config = new MapperConfiguration(cfg => { 
cfg.CreateMap<Foo, FooCopy>()
.ForMember(x =>x.Name, opt => opt.Ignore())
.ForMember(x => x.Age , opt => opt.Ignore() );
});

完整代码示例:

using System;
using AutoMapper;

public class Person
{
	public string Name { get; set; }
	public int Age { get; set; }
	public string Address { get; set; }
	public string Email { get; set; }
	
}

public class PersonVM
{
	
	public string Name { get; set; }
	public int Age { get; set; }
}
public class Program
{
	public static void Main()		
	{
		
		var config = new MapperConfiguration(cfg => { 
			cfg.CreateMap<Person, PersonVM>().ForMember(x =>x.Name, opt => opt.Ignore());
										 
		});
		
		IMapper mapper = config.CreateMapper();
		
				
		var person = new Person { Name="test", Age=10, Email = "test@test.com", Address="Test Address" };
		
		var personVM = mapper.Map<PersonVM>(person);
		
		
		Console.WriteLine("\nperson.Name : {0} \nperson.Age : {1} \nperson.Address : {2} \nperson.Email : {3}", person.Name, person.Age, person.Email, person.Address);
		Console.WriteLine("\npersonVM.Name : {0} \npersonVM.Age : {1} ", personVM.Name, personVM.Age);
	}
}

输出:

person.Name : test 
person.Age : 10 
person.Address : test@test.com 
person.Email : Test Address

personVM.Name :  
personVM.Age : 10

下一篇 忽略大量映射属性https://blog.csdn.net/hefeng_aspnet/article/details/124754933

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值