Smo*_*oot 15 c# asp.net automapper
我需要有关AutoMapper的特殊映射的帮助.我想将一组对象映射到一个字符串集合.
所以我有一个Tag分类
public class Tag
{
public Guid Id { get; set; }
public string Name {get; set; }
}
Run Code Online (Sandbox Code Playgroud)
比在模型中我有一个这个类的IList.现在我想将名称映射到字符串集合.
多数民众赞成我如何定义映射规则:
.ForMember(dest => dest.Tags, opt => opt.ResolveUsing<TagNameResolver>())
Run Code Online (Sandbox Code Playgroud)
这是我的ValueResolver:
protected override string ResolveCore(Tag source)
{
return source.Name;
}
Run Code Online (Sandbox Code Playgroud)
但你知道..它不起作用;-)所以也许有人知道如何做对,可以帮助我.
多谢
一月
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; }
}
Run Code Online (Sandbox Code Playgroud)
你可以在上面看到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 :-)
}
Run Code Online (Sandbox Code Playgroud)
所以我有一个BootStrapper用于映射.我的映射看起来像这样:
Mapper.CreateMap<Article, ArticleView>()
.ForMember(dest => dest.Tags, opt => opt.ResolveUsing<TagNameResolver>())
Run Code Online (Sandbox Code Playgroud)
我用一种特殊的方法将它绘制成manuelly
public static ArticleView ConvertToArticleView(this Article article)
{
return Mapper.Map<Article, ArticleView>(article);
}
Run Code Online (Sandbox Code Playgroud)
Ed *_*eau 26
单元测试验证以下内容将从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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是创建地图的较短方式:
.ForMember(dest => dest.Tags, opt => opt.MapFrom(so => so.Tags.Select(t=>t.Name).ToList()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8476 次 |
| 最近记录: |