簡體   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