开发者

Automapper and access to member variables

I have an mvc controller which has a helper class injected into it. I would like to convert from a viewmodel to a dto using automapper. most of the properties are simple mappings but one involves calling the helper class with a parameter from the viewmodel. Ideally I would want to do something like this:

Mapper.CreateMap<TheViewModel, TheDto>()
                .ForMember(dest => dest.Url, o => o.MapFrom(src => _urlHelper.GenerateUrlFromUsername(src.Username)));

...but I cannot because I cannot access a non-static field.

What is the best approach?

EDIT:

OK, so I have a custom resolver but how do I hook this in to my IoC container?

public class CustomResolver : ValueResolver<TheViewModel, string>
{
    private readonly IUrlHelper _urlHelper;

    public CustomResolver(IUrlHelper urlHelper)
    {
        _urlHelper = urlHelper;
    }
    protected override string ResolveCore(TheViewModel sou开发者_高级运维rce)
    {
        return _urlHelper.GenerateUrlFromUsername(source.Username);
    }
}


Use a custom resolver in this case:

http://automapper.codeplex.com/wikipage?title=Custom%20Value%20Resolvers

Custom resolvers can be instantiated from a container, so you can get whatever instance fields of services you need.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜