0
votes
Mapper.CreateMap<WorkItemSummary, WorkItemSummaryDto> ()
                .ForMember(dto => dto.ProductDisplayName, opt => opt.MapFrom(src => src.Product.DisplayName))
                .ForMember(dto => dto.TeamId, opt => opt.MapFrom(src => src.Product.Team.TeamId))
                .ForMember(dto => dto.TeamName, opt => opt.MapFrom(src => src.Product.Team.TeamName))
                .ForMember(dto => dto.RRConsolidated, opt => opt.ResolveUsing<WIConsolidateResolveReasonResolver>())
                .ForMember(dto => dto.NewBugsQuery, opt => opt.ResolveUsing<WIQueryNewBugsResolver>())
                .ForMember(dto => dto.ResolvedBugsQuery, opt => opt.ResolveUsing<WIQueryResolvedResolver>())
                .ForMember(dto => dto.ClosedBugsQuery, opt => opt.ResolveUsing<WIQueryClosedResolver>())
                .ForMember(dto => dto.BacklogQuery, opt => opt.ResolveUsing<WIQueryBacklogResolver>())
                .ForMember(dto => dto.ResolvedReasonFixQuery, opt => opt.ResolveUsing<WIQueryResolvedReasonFixResolver>());


--- Adding One Resolver Code and mostly all resolvers are doing same Job but pulling different content from Xml Nodes

    public class WIQueryNewBugsResolver: ValueResolver<WorkItemSummary, string>
    {
        protected override string ResolveCore(WorkItemSummary source)
        {

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(System.IO.Path.Combine(AppDomain.CurrentDomain.RelativeSearchPath, "WIsQuery.xml"));

        ....

        }
    }

I have multiple resolvers doing almost same job of reading some xmls and getting the data. Thinking of consolidating all those calls under one resolver. ex: WIConsolidateResolveReasonResolver, WIQueryResolvedReasonFixResolver, WIQueryBacklogResolver

In this regard, can I call one resolver once and get all the other properties populated in one call.

Is there any other method call in place of ForMember

Thanks

1
can you please share full code . - Pankaj Gupta
Just added a resolver, but my concern here is performance.... Looking to see if there is any way in AutoMapper to Populate Destination Object Properties using One Resolver - Sudheer
No May be here you can't because for member use for mapping properties with different name or make it ignore .But for checking assert.arequal you can use mapper.assertconfigurationisvalid() for checking equality not need to check single-2 properties. - Pankaj Gupta

1 Answers

0
votes

use "forallmembers" method of automapper if same job you are doing.may be it will help for you.