1
這個標題很混亂。用代碼顯示會更容易一些。這裏有後臺類:Automapper - 創建自定義屬性映射,其中源對象未知並且屬性名稱不匹配?
public interface ISearch { }
public class Search1 : ISearch
{
public string PROP1 { get; set; }
}
public class Search2 : ISearch
{
public string PROP2 { get; set; }
}
public class SearchFinal
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}
這就是我想要做的事:
public class SomeClass
{
IMapper mapper;
public SomeClass()
{
//This config fails validation
var config = new MapperConfiguration(cfg => {
cfg.CreateMap<ISearch, SearchFinal>()
.ForMember(dest => dest.Prop1, opts => opts.MapFrom("PROP1"))
.ForMember(dest => dest.Prop2, opts => opts.MapFrom("PROP2"));
});
mapper = new Mapper(config);
}
public void SearchMethod(ISearch search)
{
SearchFinal test = mapper.Map<SearchFinal>(search);
// Do query stuff
}
}
的配置在運行時驗證失敗,因爲「PROP1」 /「PROP2」性質唐在界面中不存在。有沒有辦法設置這張地圖?圍繞這個問題的任何其他方式,而不重組這個承認醜陋的代碼結構?
Awsome,謝謝!我喜歡簡單的答案。我不知道爲什麼我不認爲我可以將ISearch傳遞到映射方法,如果它沒有在配置中定義! – Andrew