繁体   English   中英

为动态/扩展对象配置AutoMapper映射

[英]Configuring AutoMapper Maps for Dynamic/Expando Object

我正在使用AutoMapper将ExpandoObjects映射到Entity,并希望配置一些映射规则,特别是,我不想映射到任何从Entity继承的属性。 我试图在这些属性上设置“忽略”,但是它永远不会对顶级对象执行,我遇到了从实体字符串=>实体继承的实体属性的断点,但是从未对ExpandoObject =>实体继承。

Startup.cs

public IServiceProvider ConfigureServices(IServiceCollection services)
{
  services.AddAutoMapper(config =>
  {
    config.ForAllMaps((cfg, expr) =>
    {
      if (typeof(Entity).IsAssignableFrom(cfg.DestinationType))
      {
        var properties = cfg.DestinationType.GetProperties()
            .Where(prop => typeof(Entity).IsAssignableFrom(prop.PropertyType));

        foreach (var prop in properties)
        {
          expr.ForMember(prop.Name, opt => opt.Ignore());
        }
      }
    });

    config.CreateMissingTypeMaps = true;
    config.ValidateInlineMaps = false;
  });

我找到了一些有效的代码,但我希望找到一种不全局的方法。

.AddAutoMapper(config =>
{
  config.ShouldMapProperty = pi => !typeof(Entity).IsAssignableFrom(pi.PropertyType);

  config.CreateMissingTypeMaps = true;
  config.ValidateInlineMaps = false;
});

有没有一种方法可以为ExpandoObjects配置地图? 该文档显示了如何映射它们,但是没有为它们配置映射的任何信息。

不,来自ExpandoObject映射是内置的,不能像您自己创建的常规映射那样工作。 而且没有办法对其进行配置。 是代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM