ile çalışır bu
Mapper.CreateMap<OpenName, RestrictedName>()
.ConstructUsing(s => new RestrictedName(s.Name));
gibi ConstructUsing kullanabilirsiniz AutoMapper, özel ayarlayıcılarla özellikleri eşlemek için şimdi (ne zamandan beri emin değilim) izin veriyor. Nesneleri yaratmak için yansıma kullanıyor.
Örnek sınıfları:
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
}
public class PersonDto
{
public string Fullname { get; private set; }
}
Ve haritalama:
AutoMapper.Mapper.CreateMap<Person, PersonDto>()
.ForMember(dest => dest.Fullname, conf => conf.MapFrom(src => src.Name + " " + src.Surname));
var p = new Person()
{
Name = "John",
Surname = "Doe"
};
var pDto = AutoMapper.Mapper.Map<PersonDto>(p);
AutoMapper hiçbir sorunla özel belirleyici ile mülkiyet eşler. Kapsülleme zorlamak istiyorsanız, IgnoreAllPropertiesWithAnInaccessibleSetter kullanmanız gerekir. Bu seçenek ile, tüm özel özellikler (ve diğer erişilemez) göz ardı edilecektir.
AutoMapper.Mapper.CreateMap<Person, PersonDto>()
.ForMember(dest => dest.Fullname, conf => conf.MapFrom(src => src.Name + " " + src.Surname))
.IgnoreAllPropertiesWithAnInaccessibleSetter();
Silverlight'ı kullanırsanız, sorun ortaya çıkacaktır. MSDN göre: https://msdn.microsoft.com/en-us/library/stfy7tfc(v=VS.95).aspx
In Silverlight, you cannot use reflection to access private types and members.
kullandığınız Automapper sürümü nedir? Bunu denedin mi? – PatrickSteele
Blockhead aslında çok önemli bir sorudur, değişmez nesneler, istendiğinde değiştirilebilen nesnelerden çok daha iyi bir mimari uygulamadır (setleyicilerini kamuya açık olarak göstererek). Bu, Entity Framework'ün yakın zamanda, ilk hidrasyondan sonra etki alanı modelinin değişmez kalmasına izin vermek için özel özelliklere hidratlama yeteneğini eklediğinin tam sebebidir. Belki de mimarilerini tazelemek için gerekli olan leozilla değildir. ;) – Marchy
Özür diler misiniz? Özel mülklerin özel olması gerekiyor. Nesneye ait olan veridir ve sadece nesne bilir ve bu verileri bilmelidir. – blockhead