kullanma
Mapper.CreateMap<User, UserDto>();
Mapper.CreateMap<KeyValuePair<User, bool>, UserDto>()
.ConstructUsing(src => Mapper.Map<User, UserDto>(src.Key))
.ForMember(dest => dest.IsFriend, opt => opt.MapFrom(src => src.Value));
Bu oyuna, henüz bir sözlük bir .Net türüne eşleme için daha genel bir çözüm gibi görünüyor (si mple)
automapper kullanılarak
public static IMappingExpression<Dictionary<string, string>, TDestination> ConvertFromDictionary<TDestination>(
this IMappingExpression<Dictionary<string, string>, TDestination> exp)
{
foreach (PropertyInfo pi in typeof(TDestination).GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
{
exp.ForMember(propertyName, cfg => cfg.MapFrom(r => r[propertyName]));
}
return exp;
}
bu
Mapper.CreateMap<Dictionary<string, string>, TDestination>().ConvertFromDictionary();
TDestination yapabilirsiniz NET basit tür gibi kullanın. Karmaşık türler için, bir Func/Action temsilcisini ve bu işlevi kullanarak haritayı sağlayabilirsiniz. (Her biri için yukarıdakilerin içinde)
Ör.
if (customPropNameMapFunc != null && !string.IsNullOrEmpty(customPropNameMapFunc(propertyName)))
{
exp.ForMember(propertyName, cfg => cfg.MapFrom(r => r[customPropNameMapFunc(propertyName)]));
}
Herhangi biri bana otomatik bir araç kullanan bir yöntem verebilirse, sorudaki cevabı değiştireceğim! – reach4thelasers