为 Dynamic/Expando 个对象配置 AutoMapper 映射

Configuring AutoMapper Maps for Dynamic/Expando Object

我正在使用 AutoMapper 将 ExpandoObjects 映射到一个实体,并想为映射配置一些规则,具体来说,我不想映射到任何从实体继承的 属性;我试图在这些属性上设置忽略,但它从不为顶级对象执行,我为从实体字符串 => 实体继承的实体属性设置了断点,但从不为 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 的映射是内置的,不像您自己创建的常规地图那样工作。而且没有办法配置它。 Here是代码。