Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将参数传递到实现IMappingAction的类中_C#_.net_Automapper - Fatal编程技术网

C# 将参数传递到实现IMappingAction的类中

C# 将参数传递到实现IMappingAction的类中,c#,.net,automapper,C#,.net,Automapper,我正在使用和实现接口,但在使用它时需要传递一个参数。 这是我能做的吗 public class AfterMapAction : IMappingAction<SourceClass, DestinationClass> { public void Process( SourceClass source, DestinationClass destination, ResolutionContext context) {

我正在使用和实现接口,但在使用它时需要传递一个参数。 这是我能做的吗

public class AfterMapAction : IMappingAction<SourceClass, DestinationClass>
{
    public void Process(
        SourceClass source,
        DestinationClass destination,
        ResolutionContext context)
    {
        destination.Name = PassedParameterName
    }
}

CreateMap<SourceClass, DestinationClass>()
                .AfterMap<AfterMapAction>(); //<== Where do I pass the parameter
public类aftermappaction:IMappingAction
{
公共无效程序(
SourceClass源,
目的地类目的地,
决议(上下文)
{
destination.Name=PassedParameterName
}
}
CreateMap()

.AfterMap()// 接口类似于契约,因此无论在接口中定义什么,都必须在类中实现,因此,如果接口中没有包含参数的方法定义,则不能在其中输入参数


当然,如果您不想违背合同义务,那么在这种情况下,法律官员(编译器)有话要说……

您可以使用
ResolutionContext
将参数(
name-value
pair)传递给
AfterMap
动作函数

方法如下:

// AfterMap Action function that usages context
public class AfterMapAction : IMappingAction<Source, Destination>
{
    public void Process(Source source, Destination destination, 
                                       ResolutionContext context)
    {
        destination.Name = context.Items["YourVal"].ToString();
    }
}


//Configuration declaration
var configuration = new MapperConfiguration(cfg =>
{
    cfg.CreateMap<Source, Destination>()
      .AfterMap<AfterMapAction>();
});

var mapper = configuration.CreateMapper();    

//Pass actual parameter value e.g. "ActualName" 
var result = mapper.Map<Source, Destination>(source, opt => 
                       opt.Items["YourVal"] = "ActualName");

// The result will have Name as "ActualName".
//使用上下文的AfterMap操作函数
公共类AfterMapAction:ImapingAction
{
公共作废流程(源、目标、,
决议(上下文)
{
destination.Name=context.Items[“YourVal”].ToString();
}
}
//配置声明
var配置=新的MapperConfiguration(cfg=>
{
cfg.CreateMap()
.AfterMap();
});
var mapper=configuration.CreateMapper();
//传递实际参数值,例如“实际名称”
var result=mapper.Map(源,opt=>
选项项[“YourVal”]=“实际名称”);
//结果的名称为“ActualName”。
与DI相同或通过DI。