Итак, у меня есть этот класс TranslatedString: ListDictionary
public class TranslatedString {
public string Language {get;set}
public string Value {
get {
return this[Language] as string;
}
set {
this[Language] = value;
}
}
....more complex logic in this class
}
и класс назначения, который выглядит следующим образом:
{
public TranslatedString Name {get;set;}
public TranslatedString Desc {get;set;}
public void SetLanguage(string lang) {
this.Name.Language = lang;
this.Desc.Language = lang;
}
}
Теперь я хочу сопоставить подобный источник с пунктом назначениявыше:
{
public string Language {get;set;}
public string Name {get;set;}
public string Desc {get;set;}
}
Вот моя карта:
CreateMap<String, TranslatedString>(MemberList.None)
.ForMember(x => x.Value, o => o.MapFrom(s => s));
CreateMap<Source, Dest>(MemberList.Source)
.BeforeMap((s, d, context) {
d.SetLanguage((string)context.Items["Language"]);
});
и вот как я отображаю:
var dest = Mapper.Map<Dest>(source, opt => opt.Items["Language"] = "en");
У меня есть проблема в том, что когда Autopper отображает строку => TranslatedString создает новый экземпляр каждой TranslatedString, что означает, что «Language», установленный в «BeforeMap», теряет свое значение.Как решить эту проблему и сохранить общее решение для всех отображений String => TranslatedString для всех классов?