Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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# 如何使用AutoMapper忽略目标成员?_C#_Automapper - Fatal编程技术网

C# 如何使用AutoMapper忽略目标成员?

C# 如何使用AutoMapper忽略目标成员?,c#,automapper,C#,Automapper,我有两门课: public class MyModel() { public int Id {get; set;} public string Name {get; set;} public bool IgnoreModel {get; set;} } public class MyDto() { public int Id {get; set;} public string Name {get; set;} public bool Ignore

我有两门课:

public class MyModel()
{
    public int Id {get; set;}
    public string Name {get; set;}
    public bool IgnoreModel {get; set;}
}

public class MyDto()
{
    public int Id {get; set;}
    public string Name {get; set;}
    public bool IgnoreDto {get; set;}
}
我想同时忽略
IgnoreModel
IgnoreDto
。我的映射如下所示:

Mapper.CreateMap<MyModel, MyDto>().Bidirectional()
.ForMember(model=> model.IgnoreModel, option => option.Ignore())
.ForSourceMember(dto => dto.IgnoreDto, option => option.Ignore());
Mapper.CreateMap()双向()
.ForMember(model=>model.IgnoreModel,option=>option.Ignore())
.ForSourceMember(dto=>dto.IgnoreDto,option=>option.Ignore());
其中双向()是一个扩展:

    public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
    {
        return Mapper.CreateMap<TDestination, TSource>();
    }
publicstaticimappingexpression双向(此IMappingExpression表达式)
{
返回Mapper.CreateMap();
}
但是,我得到一个错误,
IgnoreDto
未映射:

`找到了未映射的成员。查看下面的类型和成员。 添加自定义映射表达式、忽略、添加自定义解析程序或修改源/目标类型

MyModel->MyDto(目标成员列表) modelsassembly.MyModel->DtoAssembly.MyDto(目标成员列表)

未映射属性: 忽视`

忽略这种映射的正确方法是什么?

在映射使映射规则应用于第二个映射之后,应用扩展(返回另一个对象)。您的第一个映射没有应用任何规则

要使其正常工作,请分别在每个映射上使用“忽略”:

Mapper.CreateMap<MyModel, MyDto>()
.ForMember(model=> model.IgnoreModel, option => option.Ignore());

Mapper.CreateMap<MyDto, MyModel>()
.ForMember(model=> model.IgnoreDto, option => option.Ignore());    
Mapper.CreateMap()
.ForMember(model=>model.IgnoreModel,option=>option.Ignore());
Mapper.CreateMap()
.ForMember(model=>model.IgnoreDto,option=>option.Ignore());

我觉得这很合适。
Mapper.assertconfigurationsvalid()的输出是什么?另外,出于好奇,删除
Bidirectional()
和手动映射model->dto和dto->model有什么区别吗?
Bidirectional
方法从何而来?@AndrewWhitaker这是我写的一个扩展。