我需要关于AutoMapper的一种特殊映射的帮助。我想要将一个对象集合映射到一个字符串集合。
因此,我有一个Tag类。
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;
}
但是你知道...它不起作用;-) 所以也许有人知道如何正确地做,可以帮助我。
谢谢
更新至Jan
所以...你想要更多细节..那么这里是..但我已经缩短了它;)
所以这个模型:
public class Artocle
{
public Guid Id { get; set; }
public string Title {get; set; }
public string Text { get; set; }
public IList<Tag> Tags { get; set; }
}
你可以看到上面的标签模型。
我想将它映射到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);
}