Bağlam:AutoMapper: haritalama sırasında belirli sözlük kalem (ler) Ignore
Orada şuna benzer 2 ana sınıfları:
public class Source
{
public Dictionary<AttributeType, object> Attributes { get; set; }
}
public class Target
{
public string Title { get; set; }
public string Description { get; set; }
public List<Attribute> Attributes { get; set; }
}
Ve alt/koleksiyon/Enum türü:
public class Attribute
{
public string Name { get; set; }
public string Value { get; set; }
}
public enum AttributeType
{
Title,
Description,
SomethingElse,
Foobar
}
Şu benim Haritası şuna benzer:
,Dictionary
öğeyi ve sağladığımız
AttributeType
kullanarak alır anahtar yoksa boş bir olsun denemek kullanarak ve geri dönen (bir (isim & değeri) olarak hedef koleksiyonuna ekler nesne
) ... benim Hedef set uç doldu bu gibi bakarak Sonuçta bu
:
{
title: "Foo",
attributes: [
{ name: "SomethingElse", value: "Bar" },
{ name: "Title", value: "Foo"}
]
}
Soru:
Öğelerin kalanını hedef sınıfla eşleme hakkında nasıl giderim, ancak belirli anahtarları (başlık veya açıklama gibi) hariç tutabilmem gerekir. ÖRNEĞİN. Hedefte tanımlanmış bir yere sahip Source.Attribute öğeleri Target.Attributes koleksiyonundan hariç tutulur ve "left-over" özellikleri hala Target.Attributes'a gider. daha da Anlaşılır olması için
(böyle kaynağım görünüyorsa): Böyle bir hedefe karşılık gelecek
{ attributes: { title: "Foo", somethingelse: "Bar" } }
: Ben bu teşebbüs ettik
{ title: "Foo", attributes: [{ name: "SomethingElse", value: "Bar" }] }
ama Aşağıdakileri belirterek derleme yapmaz:
Özel yapılandırma Üyeler için sadece bir tür üst düzey bireysel üyeler için desteklenir.
CreateMap<KeyValuePair<AttributeType, object>, Attribute>()
.ForSourceMember(x => x.Key == AttributeType.CompanyName, y => y.Ignore())