mar*_*nes 33 .net c# mapping automapper automapper-2
我有以下型号:
public class Tag
{
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用AutoMapper Name将Tag类型的属性映射到我的一个viewmodel中的字符串属性.
我使用以下代码创建了一个自定义解析器来尝试处理此映射:
public class TagToStringResolver : ValueResolver<Tag, string>
{
protected override string ResolveCore(Tag source)
{
return source.Name ?? string.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
我使用以下代码进行映射:
Mapper.CreateMap<Tag, String>()
.ForMember(d => d, o => o.ResolveUsing<TagToStringResolver>());
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我收到错误:
仅对类型上的顶级单个成员支持成员的自定义配置.
我究竟做错了什么?
Rob*_*est 48
这是因为您尝试映射到实际目标类型而不是目标类型的属性.你可以实现你想要的:
Mapper.CreateMap<Tag, string>().ConvertUsing(source => source.Name ?? string.Empty);
Run Code Online (Sandbox Code Playgroud)
虽然在Tag类上覆盖ToString会简单得多.
Zaf*_*afi 11
ForMember表示您为要在类型之间进行映射的成员提供映射.相反,使用这个:
Mapper.CreateMap<Tag, String>().ConvertUsing<TagToStringConverter>();
Run Code Online (Sandbox Code Playgroud)
和转换器是
public class TagToStringConverter : ITypeConverter<Tag, String>
{
public string Convert(ResolutionContext context)
{
return (context.SourceValue as Tag).Name ?? string.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21657 次 |
| 最近记录: |