使用 AutoMapper 动态映射包括数组在内的对象

2024-02-21

我正在尝试构建一种从一种类型映射到另一种类型的方法,因为我知道它们将(应该)具有相同的结构。相关问题 https://stackoverflow.com/questions/2622003/call-webservice-without-adding-a-webreference-with-complex-types.

为了简化繁琐的工作,我使用 Codeplex 的 AutoMapper,具有以下功能:

private static List<Type> seenTypes = new List<Type>();

private static void MapDataObjects(Type a, Type b)
{
    AutoMapper.Mapper.CreateMap(a, b);

    PropertyInfo[] aProps = a.GetProperties();
    PropertyInfo[] bProps = b.GetProperties();
    foreach (PropertyInfo aProp in aProps)
    {
        if (aProp.PropertyType.Namespace.StartsWith("System") 
             || seenTypes.Contains(aProp.PropertyType))
            continue;

        foreach (PropertyInfo bProp in bProps)
        {
            if (aProp.Name == bProp.Name)
            {
                MapDataObjects(aProp.PropertyType, bProp.PropertyType);
                seenTypes.Add(aProp.PropertyType);
                break;
            }
        }
    }
 }

单步执行代码时似乎工作正常,但是调用我的 Map 函数会出现以下错误:

AutoMapper.AutoMapperMappingException: 
     Trying to map TDXDataTypes.ClientActivity[] to ClientActivity[].
Using mapping configuration for TDXDataTypes.ClientActivity[] to ClientActivity[]
Destination property: Activities
Exception of type 'AutoMapper.AutoMapperMappingException' was thrown. 
    ---> System.ArgumentException: 
         Type 'ClientActivity[]' does not have a default constructor

找到了解决方案(在提出问题之前应该更努力地尝试):

 if (aProp.Name == bProp.Name)
    {
        if (aProp.PropertyType.IsArray)
        {
            MapDataObjects(aProp.PropertyType.GetElementType(), bProp.PropertyType.GetElementType());
            seenTypes.Add(aProp.PropertyType.GetElementType());
            break;
        }
        else
        {
            MapDataObjects(aProp.PropertyType, bProp.PropertyType);
            seenTypes.Add(aProp.PropertyType);
            break;
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 AutoMapper 动态映射包括数组在内的对象 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • android jdbc odbc 连接

    我想将 odbc 连接连接到我的 Android 应用程序 我的数据库是oracle 10g 在我的代码中 我的表名称是 world 编译我的程序并关闭模拟器在 oracle 数据库中打开的表后 无法存储值 我在 cmp 中编译普通 jav
  • 使用 pandas.cut 和 IntervalIndex 后如何重命名类别?

    我使用离散化数据框中的一列pandas cut与创建的垃圾箱IntervalIndex from tuples 剪切按预期工作 但是类别显示为我在IntervalIndex 有什么方法可以将类别重命名为不同的标签 例如 小号中号大号 Exa
  • 如何使用 CSS 定位文本输入字段?

    假设您有以下 HTML
  • 使用JAVA从jar文件中读取MANIFEST.MF文件

    有什么方法可以读取 jar 文件的内容吗 就像我想读取清单文件以便找到 jar 文件的创建者和版本一样 有什么办法可以达到同样的目的 下一个代码应该有帮助 JarInputStream jarStream new JarInputStrea
  • 正则表达式匹配两个不相等的数字

    我想知道如何匹配两个不同的数字 所以 匹配 12 就可以了 但不能匹配 11 到目前为止我所拥有的是 我必须匹配像 P12 这样的字符串 我已经用这个正则表达式完成了 P 1 6 1 1 6 1 但现在我的问题是如何仅匹配 P12 或 P3
  • 应用程序之间的对象共享?

    假设我有一个每秒更新 1000 多次的大型数据数组 另一个应用程序想要在短时间内访问和读取数组 两个应用程序都在同一台机器上 我曾尝试使用 WCF 进行进程间通信 但每秒序列化和发送整个数组 或大型对象 数千次在性能方面是不可行的 有没有办
  • 如何优化连字符

    我正在努力解决浏览器处理逐行对齐文本连字的不同方式 我的文本有以下 css 设置 text align justify webkit hyphens auto moz hyphens auto ms hyphens auto hyphens
  • 为什么Android中只有UI线程才能更新UI?

    有人可以向我解释一下为什么Android中只有UI线程可以更新UI吗 为什么其他线程不能更新 UI 文档 https developer android com guide components processes and threads
  • 如何以编程方式更新 ui-grid 中的排序指示器?

    我正在使用 ui grid v3 0 0 rc 22 2015 06 15 它被配置为使用外部排序 效果很好 现在我需要使用选择框从外部更改排序列 每次更改选择框时 它都会触发外部排序 并且网格中的数据会正确更新 它还更新 gridOpti
  • Spring Data JPA JSONB 参数化

    将此查询转换为 Spring Data Repository 的正确语法 JPA Spring Data 或 SpEL 是什么nativeQuery SELECT FROM mytable WHERE f jsonb arr lower m
  • 在 vscode 中添加特定于语言的图标

    我已经创建了一个语言扩展 语法突出显示等 现在想要将特定图标与该语言 或具有我的扩展中指定的扩展名的文件 相关联 我注意到一个 icon 财产可在package json文件 并尝试将此属性绑定到我的 svg文件 但是 虽然语法突出显示在测
  • 为什么我无法停止 RDS 实例?

    I spun up two RDS instances in the same VPC Both are postgresql While the m4 xlarge one has multi AZ enabled and is encr
  • 在配置单元中支持外部表的数组列类型的最佳方法是什么?

    所以我有制表符分隔数据的外部表 一个简单的表格如下所示 create external table if not exists categories id string tag string legid string image strin
  • 具有多个条件的聚合以及基于计数键的求和匹配

    我试图获取另一个集合中的对象数组中存在的元素的计数 例子 集合A id 1 name Sample1 id 2 name Sample 2 id 3 name Sample 3 id 4 name Sample 4 集合B id 11 it
  • C# 将类的复杂对象序列化为json

    我想将以下类的新对象转换为 json 字符串 为此 我使用 JavaScriptSerializer 和 Newtonsoft 库 但它们的输出都是空括号 using System using System Collections usin
  • 对外部生成的静态内容进行指纹识别(ASP.NET + browserify)

    Nodejs browserify https github com substack browserify handbook introduction在构建模块化 js 应用程序时非常棒 如果gulp也是设置 工作流程的一部分进一步增强
  • JBOSS WEB-INF/lib 内容排序

    我有一个ear 文件 其中包含一个war 文件 war 的 WEB INF lib 目录中包含许多 jar 文件 其中一些 jar 包含相同类的冲突 或至少不同 版本 有没有办法可以影响 JBOSS 将这些 jar 文件添加到类路径的顺序
  • firebase-admin 是否会覆盖 firestore 安全规则?

    如果读 写访问的安全规则设置为需要身份验证 firebase admin 是否能够在没有身份验证的情况下读 写 Firebase Admin SDK 使用服务帐户访问您的数据库 服务帐号会忽略 Cloud Firestore 安全规则 类似
  • Git:添加、推送、提交

    git 和 git 有什么区别add push and commit 只是来自 SVN 的有点困惑 其中 更新 将 添加 内容 而提交则执行 推送 并且也会 添加 git 中有各种不同的功能 希望根据您的经验给出一些解释 git add将修
  • 使用 AutoMapper 动态映射包括数组在内的对象

    我正在尝试构建一种从一种类型映射到另一种类型的方法 因为我知道它们将 应该 具有相同的结构 相关问题 https stackoverflow com questions 2622003 call webservice without add