c# - 使用 AutoMapper 将对象的属性映射到字符串

标签 c# .net mapping automapper automapper-2

我有以下模型:

public class Tag
{
    public int Id { get; set; }
    public string Name { get; set; }
}

我希望能够使用 AutoMapper 将 Tag 类型的 Name 属性映射到我的一个 View 模型中的字符串属性。

我创建了一个自定义解析器来尝试使用以下代码处理此映射:

public class TagToStringResolver : ValueResolver<Tag, string>
    {
        protected override string ResolveCore(Tag source)
        {
            return source.Name ?? string.Empty;
        }
    }

我正在使用以下代码进行映射:

Mapper.CreateMap<Tag, String>()
    .ForMember(d => d, o => o.ResolveUsing<TagToStringResolver>());

当我运行应用程序时出现错误:

Custom configuration for members is only supported for top-level individual members on a type.

我做错了什么?

最佳答案

这是因为您试图映射到实际目标类型而不是目标类型的属性。您可以通过以下方式实现您想要的:

Mapper.CreateMap<Tag, string>().ConvertUsing(source => source.Name ?? string.Empty);

尽管仅在 Tag 类上覆盖 ToString 会简单得多。

关于c# - 使用 AutoMapper 将对象的属性映射到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11189729/

相关文章:

.net - 在自定义配置中添加 Intellisense

c# - 让 2 个不同的映射文件在同一个域中工作

c# - Entity Framework 无法使用复合键更新表中的数据 (Oracle)

c# - 在 ASP.NET Web API 中使用多个 Get 方法进行路由

c# - 关于变量名成员前缀

c# - 我对C#线程池的理解正确吗?

c# - Unity3D - GameObject.Find() vs Inspector 分配性能

c# - Autofac 的编译时支持

c++ - 在跳过对角线的 vector 上映射上三角矩阵

mysql - mongodb 相当于 SELECT 字段 AS `anothername`