Я хотел бы объединить один объект в другой общим способом, который может использоваться повторно для других более сложных объектов. Я только хочу, чтобы NULL менялись.Как скопировать все поля из одного объекта в другой, но только когда значение назначения равно NULL
ie. объединить sourcePerson и detinationPerson получить resultingPerson (ниже)
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int? Age { get; set; }
public string Address { get; set; }
}
var sourcePerson = new Person
{
FirstName = "Bill",
LastName = "Smith",
Age = 43,
Address = "123 Some Street"
};
var destinationPerson = new Person
{
FirstName = "Barbara",
LastName = null,
Age = 41,
Address = null
};
var resultingPerson = new Person
{
FirstName = "Barbara",
LastName = "Smith",
Age = 41,
Address = "123 Some Street"
};
Я попытался Automapper, но не могу настроить его должным образом. Я чувствую, что следующее должно работать. Помогите?
Mapper.CreateMap<Person, Person>().ForAllMembers(opt => opt.UseDestinationValue());
Mapper.Map(sourcePerson, destinationPerson);
ли он работать тогда? С какими проблемами вы сталкиваетесь? –
Пожалуйста, смотрите здесь, похоже, у вас такая же проблема. Http://stackoverflow.com/questions/24359634/c-sharp-automapper-conditional-mapping-based-upon-target-value – tutok
@Matt Меняет ваше сопоставление на: 'Mapper.CreateMap(). ForAllMembers (opt => opt.Condition (person => person.DestinationValue == null));' работает? –
IronGeek