C# AutoMapper-传递用于关联对象映射的参数

C# AutoMapper-传递用于关联对象映射的参数,c#,automapper,C#,Automapper,我正在使用Automapper映射客户对象。每个客户对象都有一个地址对象数组 在映射AdressType属性的过程中,我希望使用在客户对象上的Mapper.Map调用过程中传入的变量。变量与Customer对象本身无关,但与关联地址对象的映射相关。 传入一个使用变量映射AddressType属性的函数也可以。有没有办法做这样的事 我不知道如何调用FormMember来映射AddressType属性。变量是在映射customer对象之前创建的。这不像在FormMember中调用方法来映射Addre

我正在使用Automapper映射客户对象。每个客户对象都有一个地址对象数组

在映射AdressType属性的过程中,我希望使用在客户对象上的Mapper.Map调用过程中传入的变量。变量与Customer对象本身无关,但与关联地址对象的映射相关。 传入一个使用变量映射AddressType属性的函数也可以。有没有办法做这样的事

我不知道如何调用FormMember来映射AddressType属性。变量是在映射customer对象之前创建的。这不像在FormMember中调用方法来映射AddressType那么简单。我必须使用沿途创建的变量

当我输入这个时,我想让变量成为静态的,这样它就可以由一个可以在FormMember中使用的静态方法返回。但仔细想想,我不认为我可以侥幸逃脱,因为该应用程序实际上是一个WCF服务。对于传入的每个请求,变量都是不同的

我正在VS2012解决方案中使用AutoMapper 4.2.1。 有什么想法,建议,生命线吗

    myVariable = ...
    var customerDest = mapper.Map<CustomerSource, CustomerDestination>(someCustomerSource, <my variable or function>);


    // Configuration of AutoMapper
    var config = new MapperConfiguration(cfg => {
      cfg.CreateMap<AddressSource, AddressDestination>()
        .ForMember(m => m.AddressType, 
            opt => opt.MapFrom(src => MapAddressType(src.AddressType, <my variable>) ???


    public class Customer 
    { 
        public Address[] Addresses { get; set; }
    }

    public Address
    {
      public string AdresType { get; set; }
    }
myVariable=。。。
var customerDest=mapper.Map(someCustomerSource,);
//自动映射器的配置
var config=new-MapperConfiguration(cfg=>{
cfg.CreateMap()
.FormMember(m=>m.AddressType,
opt=>opt.MapFrom(src=>MapAddressType(src.AddressType,)???
公共类客户
{ 
公共地址[]地址{get;set;}
}
公共广播
{
公共字符串地址类型{get;set;}
}
解决方案:

cfg.CreateMap<AddressSource, AddressDestination>()
                    .ForMember(m => m.AddressType, opt => opt.ResolveUsing(
                        (resolutionResult, source) => 
                            {
                                var addressType = (resolutionResult.Context.SourceValue as AddressSource).AddressType;
                                var myVariable = resolutionResult.Context.Options.Items["myVariable"] as Dictionary<string, SomeType>;
                                return DoStuff(addressType, myVariable);
                            }));



var dest = mapper.Map<CustomerDestination>(customerSource,
                        opt => opt.Items["myVariable"] = myVariable);
cfg.CreateMap()
.FormMember(m=>m.AddressType,opt=>opt.ResolveUsing(
(解析结果,来源)=>
{
var addressType=(resolutionResult.Context.SourceValue作为AddressSource);
var myVariable=resolutionResult.Context.Options.Items[“myVariable”]作为字典;
返回DoStuff(addressType,myVariable);
}));
var dest=mapper.Map(customerSource,
opt=>opt.Items[“myVariable”]=myVariable);

的可能重复即使我使用的是较旧的版本(4.2.1),它也给了我足够的指针来解决它。