C# 在映射期间更改配置
我正在研究在我们的应用程序中使用AutoMapper的可能性。它运行良好,但我有这种情况。鉴于这一类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
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
上的静态方法。这可能会变得复杂,但您可以使用映射引擎的自身配置创建多个实例。