Мне нужна помощь со специальным сопоставлением с AutoMapper. Я хочу сопоставить коллекцию объектов с коллекцией строк.
Итак, у меня есть Tag classd
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;
}
Но знаете ... это не работает ;-) Так что, может быть, кто-то знаю, как это сделать правильно, и может мне помочь.
thx alot
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);
}