在這篇文章中,我将向你展示如何通過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 = "[email protected]", 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 : [email protected]
person.Email : Test Address
personVM.Name :
personVM.Age : 10
下一篇 忽略大量映射屬性
https://blog.csdn.net/hefeng_aspnet/article/details/124754933