C# 在映射期间更改配置

C# 在映射期间更改配置,c#,automapper,C#,Automapper,我正在研究在我们的应用程序中使用AutoMapper的可能性。它运行良好,但我有这种情况。鉴于这一类 public class Foo { public string Name { get; set; } public Bar Bar { get; set; } } 我可以使用默认配置很好地映射到它 Mapper.CreateMap<Something, Foo>(); Mapper.CreateMap(); 然后打电话 .Project().To<Foo

我正在研究在我们的应用程序中使用AutoMapper的可能性。它运行良好,但我有这种情况。鉴于这一类

public class Foo
{
    public string Name { get; set; }
    public Bar Bar { get; set; }
}
我可以使用默认配置很好地映射到它

Mapper.CreateMap<Something, Foo>();
Mapper.CreateMap();
然后打电话

.Project().To<Foo>();
.Project().To();
(适用于IQueryable)


但是,在一种情况下,我不想通过映射栏属性。我希望它被忽略。这一次是否可以更改映射配置?如果是,怎么做?

不,这是不可能的,特别是考虑到您使用的是EF映射方式。您实际上是在讨论表达式树的条件构建。解决此问题的最佳方法是创建两个单独的目标类型,可能根据需要使用继承来添加其他字段。

如果(我想要Bar)CreateMapWithBar else(CreateMapWithoutBar)可以执行
或者您正在启动时创建地图?我希望在启动时创建地图。然后选择基于if语句映射属性抱歉,然后,我只知道如果你在创建你需要的映射时如何做。为什么不在映射后跳过该属性或在映射后将其设置为空?@Tan考虑过这一点,但是这是作为EF查询的一部分完成的,在我的情况下是不可能的。我担心你会这么说。这是我的应急计划。情况是,我们需要确保某些客户无法访问某些字段。您可以创建单独的映射器实例,而不必使用
mapper
上的静态方法。这可能会变得复杂,但您可以使用映射引擎的自身配置创建多个实例。