自动映射器 - 继承映射器不与类型转换器一起使用

2023-12-01

不能同时使用映射继承和 TypeConverter。

我有这个代码:

/* BaseClassTypeConverter.cs */
public class BaseClassTypeConverter : ITypeConverter<SourceClass, BaseClass> {
    public BaseClass Convert(ResolutionContext context) {
        if (context == null || context.IsSourceValueNull)
            return null;

        var src = (SourceClass)context.SourceValue;

        return new BaseClass() {
            CommonAttr = src.SourceAttr
        };
    }
}

/* AutoMapperConfig.cs */
public static class AutoMapperConfig {

    public static void RegisterMappings() {
        AutoMapper.Mapper.Initialize(config => {
            config
                .CreateMap<SourceClass, BaseClass>()
                .Include<SourceClass, DerivedClass1>()
                .Include<SourceClass, DerivedClass2>()  
                .ForMember(dest => dest.CommonAttr, o => o.MapFrom(src => src.SourceAttr));
                //.ConvertUsing<BaseClassTypeConverter>(); //  NOT WORKING

            config
                .CreateMap<SourceClass, DerivedClass1>()
                .ForMember(dest => dest.Dummy, o => o.MapFrom(src => src.SourceAttr2))
                .IncludeBase<SourceClass, BaseClass>();
        });
    }
}

正如您所看到的,我希望能够从 TypeConverter 类进行映射,因为我有一些更复杂的计算要做,而不仅仅是如上所述分配值。

当我使用类型转换器时,映射不起作用,但是当我删除 ConvertUsing 并使用 ForMember 的内联映射时,一切都正常。

这是我缺少的东西吗?

PD。我正在使用:AutoMapper:版本=“4.2.1”,targetFramework=“net452”


不,您不能将 ConvertUsing 和其他任何东西结合起来。一旦您使用自定义类型转换器,映射就完全取决于您。这就是为什么“ConvertUsing”返回“void”,这是一个信号,表示“您已完成配置,谢谢”。

但是,您可以使用 ConstructUsing 构建初始目标对象。或者自定义 AfterMap,这也是继承的。只是不使用ConvertUsing。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动映射器 - 继承映射器不与类型转换器一起使用 的相关文章

随机推荐

  • 从 PowerShell 执行外部命令不接受参数

    我正在执行以下代码 尝试执行 7z exe 命令来解压缩文件 dir 包含用户输入的 zip 文件路径can当然包含空格 下面的 dir temp2 是我之前创建的目录 Get ChildItem path dir Filter zip F
  • 在 requirejs 模块 javascript 中调用函数内部的函数

    大家好 这可能吗 在 requirejs 模块内的函数内调用函数 TIA define common function Common return func1 function return this is function 1 func2
  • 另一个排列词难题......使用 Linq?

    我见过很多获取给定字母集的所有排列的例子 递归似乎可以很好地获得一组字母的所有可能组合 尽管它似乎没有考虑其中两个字母是否相同 我想知道的是 您是否可以使用 linq 或不使用 将所有可能的字母组合减少到 3 个字母组合 例如 给定字母 P
  • 更新/编辑 localStorage - JSONObject

    是否可以编辑存储在 Web 本地存储上的 JSON 对象 目前我有一个字符串化的 JSON 对象 fname Jerry lname Lewis email email protected password 使用该功能 localStora
  • 将 pdf 页面添加到现有 pdf Objective-c

    我正在为 iphone ipad 编写一个应用程序 将相机图像 png 转换为 pdf 并保存到 user documents 文件夹 现在我试图弄清楚如何将另一个 pdf 附加到现有文档中 这样它们就会变成多页 基本上 如果您将 doc1
  • TJSON.JsonToObject 不通过 setter

    将 Json 字符串转换为我自己的对象时遇到一些问题 我举一些例子 我的课 TClasse class private Fid integer Fnome string procedure Setid const Value integer
  • 如何扩展顶级QTreeview项目

    我不明白为什么这似乎没有扩展 QTreeView 中的顶级根项目 clear existing treeview data model self treeview model sourceModel model clear add tree
  • Android:由同一意图启动多个活动实例。将一个独特的元素带到前台?

    我正在努力开发启动多个实例的应用程序 使用相同意图的相同活动 我的主要活动是课堂类型 A 它对两个相同的子项执行 startActivity B类 所以我们推出了B1和B2 如果 B1 和 B2 都是 暂停 通过按后退按钮并确保未调用 fi
  • Google 运算符的正则表达式

    使用 PHP 我试图通过支持类似 Google 的运算符 例如 关键字 自然 默认 关键字 或 搜索短语 完全匹配 关键字 部分匹配 为此 我需要将字符串拆分为两个数组 一种将确切的单词 但没有双引号 放入 Array1 中 并将其他所有内
  • 合并两个 XElement

    我不太确定如何问这个问题 或者这是否存在 但我需要合并两个 XElement 其中一个优先于另一个 以成为一个元素 这里首选 VB NET 和 Linq 但任何语言如果能够演示如何执行此操作 而无需我编写代码来手动分离和解析每个元素和属性
  • Cucumber:不允许扩展定义步骤定义或挂钩的类

    我从别人那里继承了一个大的测试项目 主要的Java类是CommonSteps CommonBase和CommonScript 它们目前是这样关联的 CommonSteps 扩展了 CommonBase CommonBase 扩展了 Comm
  • 如何在不输入时间的情况下读取两个相同的日期

    我有一个如下查询 SELECT occupation AS Contact occupation sum total AS Quantity FROM SELECT CASE WHEN contacts occupation IS NULL
  • 时间事件监听器

    我的问题 如何让我的应用程序在特定时间执行某些操作 特别是在技术上无法运行的情况下 这可能吗 最佳实践 事件监听器 ETC 扩张 我对 Android 开发还很陌生 我想构建一个调度应用程序 它可以在预先安排的时间控制手机的某些功能 假设我
  • 如何正确初始化平台驱动程序的属性组?

    EDIT 4 我发现我不应该分配attr groups to the groups领域中的driver领域的struct platform driver结构 找评论吧 WRONGO should not be assigned here 以
  • 对 MS Graph API 的请求给出“授权请求被拒绝 - 没有足够的权限来完成操作”

    我对 授权请求被拒绝 权限不足 无法完成操作 消息有疑问 该消息不断从对 Windows Graph API 的请求中返回 具体来说 我在 Azure 云中工作 我有一个调用 API 的 iOS 移动应用程序 我已在我的门户中打开 Acti
  • Perl Getopt 多次使用相同选项

    In Perl getopts 是否可以多次使用相同的选项但具有不同的值 我想为用户提供输入不同网格坐标的选项 但使用相同的选项名称以最大程度地减少混乱 Ex my grid pl coords 10 12 coords 18 30 coo
  • 使用 AWT Robot 在 Mac 上切换应用程序有时有效

    我正在尝试使用机器人来切换应用程序 然后输入一些文本 为此 在我的 Mac 上 我按 Meta Tab 然后按以下顺序释放 Tab Meta Robot robot new Robot robot keyPress KeyEvent VK
  • 刚性类型变量不匹配

    我有以下失败的 Haskell 代码Couldn t match type a with a1 error bar Int gt a gt Int gt a gt a gt a bar ns fp ap snd foldl fn fp ap
  • 如何使用Python只读取目录中的wav文件?

    from scipy io wavfile import read files f for f in os listdir if os path isfile f print files for i in range 0 1 w read
  • 自动映射器 - 继承映射器不与类型转换器一起使用

    不能同时使用映射继承和 TypeConverter 我有这个代码 BaseClassTypeConverter cs public class BaseClassTypeConverter ITypeConverter