Yayın Durum göz ardı ediliyor gibi görünüyor. İşte benim Senaryo:Automapper'ın durumu göz ardı edilir
Kaynak sınıfı
public class Source
{
public IEnumerable<Enum1> Prop1{ get; set; }
public IEnumerable<Enum2> Prop2{ get; set; }
public IEnumerable<Enum3> Prop3{ get; set; }
}
bir byte dan çeteleler alt sınıf ve [Flags] süslenmiştir. Hedef sınıf, Enum1, Enum2 ve Enum3 gibi "toplam" bit değeri değerini gösteren özellikleri içerir. Dolayısıyla, Enumeration Enum1.value !, Enum1.Value2 ve Enum1.Value3'ü içeriyorsa, hedef Enum1.Value1'in bitsel değerini içerecektir. Enum1.Value2 | iç özellikler boş değildir ve haritalama başarılı ve doğru olarak hedef koyduğunda Enum1.Value3
Hedef sınıf
public Enum1 Prop1 { get; set; }
public Enum2 Prop2 { get; set; }
public Enum3 Prop3 { get; set; }
AutoMapper Haritalama
Mapper.CreateMap<Source, Destination>()
.ForMember(m => m.Prop1, o =>
{
o.Condition(c => !c.IsSourceValueNull);
o.MapFrom(f => f.Prop1.Aggregate((current, next) => current | next));
})
.ForMember(m => m.Prop2, o =>
{
o.Condition(c => !c.IsSourceValueNull);
o.MapFrom(f => f.Prop2.Aggregate((current, next) => current | next));
})
.ForMember(m => m.Prop3, o =>
{
o.Condition(c => !c.IsSourceValueNull);
o.MapFrom(f => f.Prop3.Aggregate((current, next) => current | next));
});
haritalama çalışıyor. Ancak, üye kaynak değeri null olduğunda (Prop1 boş olduğunda, eşleştirmeyi atla) eşleştirmeyi atlamak istiyorum.
Kaynak.Prop1'in null olduğunu hata ayıklamadan görebilirsiniz. Durum tamamen göz ardı edilir ve değerin null olduğunu söyleyen istisnayı alır.
Trying to map Source to Destination. Destination property: Prop1. Exception of type 'AutoMapper.AutoMapperMappingException' was thrown. --> Value cannot be null. Parameter name: source
Ben IsSourceValueNull Prop1 veya boş değil gerçek Kaynak sınıf için kontrol olmadığından emin değilim. Sadece üye olan Prop1 sıfırdır.
Yardımlarınız onaylanmıştır.
Teşekkürler Patrick. Bunu ayırarak tam olarak aynı istisnayı alıyorum. – TimJohnson
Bunu daha önce yaptığımı düşündüm. Muhtemelen bir şey, c.IsSourceValueNull'un, eşlenecek tüm kaynak nesnenin boş olup olmadığını göstermesi olabilir. "C => c.Prop1! = Null" olması gerekip gerekmediğini merak ediyorum. – PatrickSteele
"Koşul" kullanarak bir kod örneği bulunamadı. Afedersiniz. Sanırım her zaman yapabiliyorsunuz: o.MapFrom (f => f.Prop1 == null? Null: f.Prop1.Aggregate (...)) – PatrickSteele