c# - AutoMapper:将对象集合映射到字符串集合

标签 c# asp.net automapper

我需要有关使用 AutoMapper 进行特殊映射的帮助。我想将对象集合映射到字符串集合。

所以我有一个标签类

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

比起在模型中我有一个这个类的 IList。现在我想将名称映射到字符串集合。

这就是我定义映射规则的方式:

.ForMember(dest => dest.Tags, opt => opt.ResolveUsing<TagNameResolver>())

这是我的 ValueResolver:

protected override string ResolveCore(Tag source)
{
    return source.Name;
}

但是你知道.. 它不起作用 ;-) 所以也许有人知道如何正确地做这件事并且可以帮助我。

非常感谢

更新到一月

Sooo..你想要更多的细节..在这里你知道了..但我已经缩短了它;)

所以模型:

public class Artocle
{
    public Guid Id { get; set; }
    public string Title {get; set; }
    public string Text { get; set; }
    public IList<Tag> Tags { get; set; }
}

还有你在上面看到的 Tag 模型。

我想将它映射到 ArticleView...我只需要为某些业务上下文使用标签模型,而不是为输出。

所以这是我需要映射到的 ViewModel:

public class ArticleView
{
    public Guid Id { get; set; }
    public string Title { get; set; }
    public string Text { get; set; }
    public IList<string> Tags { get; set; } // The mapping problem :-)
}

所以我有一个用于映射的 BootStrapper。我的映射看起来像这样:

Mapper.CreateMap<Article, ArticleView>()
.ForMember(dest => dest.Tags, opt => opt.ResolveUsing<TagNameResolver>())

然后我用一种特殊的方法手动映射它

    public static ArticleView ConvertToArticleView(this Article article)
    {
        return Mapper.Map<Article, ArticleView>(article);
    }

最佳答案

单元测试验证了以下内容将从 IList <Tag> 映射到 IList <string>

  private class TagNameResolver : ValueResolver<IList<Tag>, IList<string>>
        {
            protected override IList<string> ResolveCore(IList<Tag> source)
            {
                var tags = new List<string>();
                foreach (var tag in source)
                {
                    tags.Add(tag.Name);
                }
                return tags;
            } 
        }

这是创建 map 的一种较短的方法:

.ForMember(dest => dest.Tags, opt => opt.MapFrom(so => so.Tags.Select(t=>t.Name).ToList()));

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

相关文章:

c# - 我应该如何将我的商业模式与我的观点联系起来?

c# - AutoMapper - 使用自定义类型转换器将数据表映射到类对象

automapper - 使用 AutoMapper 映射字典

c# - 如何在表单中找到图片框并为它们添加特定的事件处理程序

c# - System.Web.HttpUtility.HtmlDecode 不适用于测试 %3cstrong%3ebold %3c/strong%3etest

c# - 确定最低兼容 API 版本

javascript - 使用 jquery 从 asp 列表框中获取所选项目的数量

ASP.net Entity Framework DropDownList 源查询不返回任何结果

IIS7 上的 ASP.NET 身份验证问题 - Windows 身份验证的 User.Identity.Name 为空

c# - 从 IronPython 中的其他命名空间访问 C# 枚举和类