automapper 带有动作的地图集合

2024-03-02

我有以下代码

IList<ConfigurationDto> result = new List<ConfigurationDto>();
foreach (var configuration in await configurations.ToListAsync())
{
    var configurationDto = _mapper.Map<ConfigurationDto>(configuration);
    configurationDto.FilePath = _fileStorage.GetShortTemporaryLink(configuration.FilePath);
    result.Add(configurationDto);
}
return result;

如果是foreach,我该如何使用automapper?我可以映射集合,但是如何调用_fileStorage.GetShortTemporaryLink对于每个项目?

我看过AfterMap http://docs.automapper.org/en/stable/Before-and-after-map-actions.html但我不知道如何得到FilePath from dest并将其映射到src逐个。我可以使用自动映射器吗?

public class ConfigurationDto
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Version { get; set; }
    public DateTime CreateDateTime { get; set; }
    public long Size { get; set; }
    public string FilePath { get; set; }
}

您可以使用IValueResolver用于配置映射以映射函数属性的接口。就像下面的示例一样。

public class CustomResolver : IValueResolver<Configuration, ConfigurationDto, string>
{
    private readonly IFileStorage fileStorage;

    public CustomResolver(IFileStorage fileStorage)
    {
        _fileStorage= fileStorage;
    }

    public int Resolve(Configuration source, ConfigurationDto destination, string member, ResolutionContext context)
    {
        return _fileStorage.GetShortTemporaryLink(source.FilePath);
    }
}

一旦我们有了我们的IValueResolver实现中,我们需要告诉 AutoMapper 在解析特定目标成员时使用此自定义值解析器。我们有几个选项可以告诉 AutoMapper 使用自定义值解析器,包括:

  • MapFrom<TValueResolver>
  • MapFrom(typeof(CustomValueResolver))
  • MapFrom(aValueResolverInstance)

然后您应该配置您的映射以使用自定义解析器来映射FilePath属性于ConfigurationDto.

var configuration = new MapperConfiguration(cfg => cfg.CreateMap<Configuration, ConfigurationDto>()
                   .ForMember(dest => dest.FilePath, opt => opt.MapFrom<CustomResolver>()));

您可以通过此链接查看有关自定义值解析器的更多信息:http://docs.automapper.org/en/stable/Custom-value-resolvers.html http://docs.automapper.org/en/stable/Custom-value-resolvers.html

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

automapper 带有动作的地图集合 的相关文章

  • C# 中四舍五入到偶数

    我没有看到 Math Round 的预期结果 return Math Round 99 96535789 2 MidpointRounding ToEven returning 99 97 据我了解 MidpointRounding ToE
  • 用户控件内所有控件均为空

    我有一个 UserControl 它使用 UserControl 以及其他控件 In the ascx文件我有以下代码
  • 静态类变量与外部变量相同,只是具有类作用域吗?

    在我看来 静态类变量与外部变量相同 因为你只需要declare它在static int x extern int x语句 并在其他地方实际定义它 通常在 cpp 文件中 静态类变量 h file class Foo static int x
  • 如何在不实例化一个类的情况下检查它是否继承了另一个类? [复制]

    这个问题在这里已经有答案了 假设我有一个如下所示的类 class Derived some inheritance stuff here 我想在我的代码中检查类似的内容 Derived is SomeType 但看起来像is运算符需要 De
  • 方法“xxx”不能是事件的方法,因为该类派生的类已经定义了该方法

    我有一个代码 public class Layout UserControl protected void DisplayX DisplayClicked object sender DisplayEventArgs e CurrentDi
  • 是否有像 gccxml 这样的用于生成包装器的 C 标头解析器工具?

    我需要为一种新的编程语言编写一些 C 标头包装器 并且想要类似 gccxml 的东西 但不完全依赖 gcc 以及它在 Windows 系统上带来的问题 只需要读C而不是C 只要有完整的文档记录 任何格式的输出都可以 Linux Solari
  • 无法通过 HTTPS 调用 Web 服务

    我正在开发一个 Net 应用程序 它与 Web 服务通信以获取一些数据 Net 应用程序和 Web 服务之间的连接是通过 HTTPS 完成的 当我从 Net 应用程序调用 Web 服务时 我得到以下堆栈跟踪 System Net WebEx
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • C# datagridview 列转入数组

    我正在用 C 构建一个程序 并在其中包含一个 datagridview 组件 datagridview 有固定数量的列 2 我想将其保存到两个单独的数组中 但行数确实发生了变化 我怎么能这样做呢 假设一个名为 dataGridView1 的
  • 您可以在一个 Windows Azure 实例上部署多个 Web 应用程序吗?

    是否可以在一个 windows azure 小型计算实例中运行一堆 Web 应用程序 我正在考虑使用 Azure 作为放置一堆处于开发和非生产状态的项目 Web 应用程序 的地方 有些实际上已经被封存了 但我想在某个地方有一个活跃的实例 我
  • 日期时间的自定义 JavaScriptConverter?

    我有一个对象 它有一个 DateTime 属性 我想通过 AJAX JSON 将该对象从 ashx 处理程序传递回网页 我不想使用第 3 方控件 当我这样做时 new JavaScriptSerializer Serialize DateT
  • 不兼容的类型 - 是因为数组已经是指针吗?

    在下面的代码中 我创建一个基于书籍结构的对象 并让它保存多个 书籍 我设置的是一个数组 即定义 启动的对象 然而 每当我去测试我对指针的了解 实践有帮助 并尝试创建一个指向创建的对象的指针时 它都会给我错误 C Users Justin D
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • #pragma pack(16) 和 #pragma pack(8) 的效果总是相同吗?

    我正在尝试使用来对齐数据成员 pragma pack n http msdn microsoft com en us library 2e70t5y1 28v vs 100 29 aspx 以下面为例 include
  • 纯虚函数可能没有内联定义。为什么?

    纯虚函数是那些虚函数并且具有纯说明符 0 第 10 4 条第 2 款C 03 的内容告诉我们什么是抽象类 顺便说一句 如下 注意 函数声明不能 同时提供纯说明符和定义 尾注 示例 struct C virtual void f 0 ill
  • 在 Java 服务器中验证 Windows 用户

    我正在开发一个用 Java 编写的服务器和一个在同一网络上的 Windows 计算机上运行的客户端 用 Net 编写的桌面应用程序 我希望进行一些基本身份验证 以便服务器可以确定运行客户端的用户的用户名 而不需要用户在客户端中重新输入其 W
  • 在 C++ 和 Windows 中使用 XmlRpc

    我需要在 Windows 平台上使用 C 中的 XmlRpc 尽管我的朋友向我保证 XmlRpc 是一种 广泛可用的标准技术 但可用的库并不多 事实上 我只找到一个库可以在 Windows 上执行此操作 另外一个库声称 您必须做很多工作才能
  • System.IO.Compression 和 ZipFile - 提取并覆盖

    我使用标准 VB NET 库来提取和压缩文件 它也可以工作 但是当我必须提取并且文件已经存在时 问题就出现了 我使用的代码 Imports Imports System IO Compression 崩溃时我调用的方法 ZipFile Ex
  • c# 模拟 IFormFile CopyToAsync() 方法

    我正在对一个异步函数进行单元测试 该函数将 IFormFile 列表转换为我自己的任意数据库文件类列表 将文件数据转换为字节数组的方法是 internal async Task
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec

随机推荐

  • “skip.header.line.count”=“1”在 SparkSession 的 Hive 中不起作用

    我正在尝试使用 SparkSession 将 CSV 数据加载到 Hive 表中 我想在加载到配置单元表时跳过标题数据 并且设置 tblproperties skip header line count 1 也不起作用 我正在使用以下代码
  • 更改 url 中的主机名

    我正在尝试使用 python 更改 url 中的主机名 并且已经使用 urlparse 模块有一段时间了 但没有找到令人满意的解决方案 举个例子 考虑一下 url https www google dk 80 barbaz https ww
  • 使用 Json.Net 序列化哈希表

    我有一个哈希表 其键为整数类型 但是当使用 json net 反序列化时 键以字符串形式返回 有没有办法使用 json net 序列化 反序列化将键类型保留在哈希表上 该哈希表是 MyType 类型的属性 var settings new
  • Facebook 分享按钮

    如何获取 Facebook 分享按钮 现在他们没有显示获取代码 首先在标签中定义一些属性 如下所示 gt xmlns http www w3 org 1999 xhtml gt xmlns fb http www facebook com
  • 如何在chart.js中应用渐变颜色?

    我正在使用 Chart js 库制作折线图 在这里我想将线条的颜色更改为渐变颜色 我试过的代码 const gradientFill ctx createLinearGradient 500 0 100 0 gradientFill add
  • Swift 中的 UserDefaults 让人疯狂[UI]

    当我开始接触 Swift 和 SwiftUI 时 我发现从 UIKit 迁移的过程非常困难 即使在尝试理解我在网上找到的许多教程之后 目前仍被 UserDefaults 所困扰 请告诉我我在这里做错了什么 非常简单的代码 将 bool 值注
  • 没有自己的文件夹的 git 子模块

    我想将我的项目的某些部分 例如我的 jQuery 插件 外部化 我正在为此目的研究子模块 它们看起来相当完美 因为它们可以在一个集中点进行管理和更新 我唯一的问题是 它们克隆到一个文件夹中 这给我留下了这样的结构 js plugin one
  • 水豚找到按钮但点击它没有任何反应

    更新 我删除了大部分 javascript 依赖项并且它起作用了 不知道哪个库或代码是邪恶的部分 我不需要它们 简单的表单 两个输入字段和一个按钮 fill in cellNumber with gt 13245678 fill in pa
  • 反转 Pandas DataFrame 中的行值

    我正在处理 pandas 数据框 我想找到每行中最远的非空值 然后反转这些值的顺序并输出一个数据框 其中行值反转 而不在第一列中留下空值 本质上是反转列顺序并将非空值向左移动 IN 1 2 3 4 5 1 a b c d e 2 a b c
  • 为什么 Nuget Javascript 包复制到 Scripts 文件夹

    当我安装时将 jQuery 从 Nuget 导入到我的 VS C 项目中 jquery js 最终出现在我的包文件夹中 这很好 因为我不想将此文件签入我的源代码管理中 因为它不是我的代码 而且我永远不会更改它 在这种情况下 它相当于我可能通
  • Safari 5.1 打破 CSS 表格单元格间距

    在更新到 Safari 5 1 之前 我的网站在所有主要浏览器上都运行良好 现在 主要导航已失效 我正在使用display table cell在列表元素内的锚元素上 并且还使用了font size 0hack 删除菜单元素之间的间距 有其
  • 在R中导入带有特殊字符的数据

    下图显示了我在 R 中导入数据 记事本 之前和导入之后的数据 我使用以下命令将其导入到 R 中 Data lt read csv data csv stringsAsFactors FALSE header TRUE quote 可以看到a
  • vim:希望它仅针对某些文件类型打开设置

    我看过this https stackoverflow com questions 158968 changing vim indentation behavior by file type但这并没有太多帮助 可能是我读得不太好 基本上我想
  • 从 Django 中的第 3 方应用程序收集消息

    如何从位于 virtualenv 目录中的第 3 方库生成消息 manage py makemessages 我尝试简单地将消息添加到 po 文件中 但每次运行 makemessages 命令时 我的翻译都会消失 非常感谢 manage p
  • Angular 6:错误:安装 google-translate-api 后无法解析“./package”

    我刚刚安装了google translate api via npm with npm install save google translate api 我没有收到任何错误消息 但是当我尝试运行时npm start它显示以下错误 ERRO
  • 如果属性与过滤器不匹配则隐藏 div 元素

    我正在我的网站上构建一个简单的过滤功能 一旦用户从位置选择 start address and end address下拉菜单 然后按 go button 我如何只显示包含 a 的 div span class waypoint span
  • 参数数据类型文本对于下层函数的参数 1 无效

    在我的应用程序的搜索功能中 我实现了一个搜索功能 该功能对数据库执行以下语句 resultsquery db DBMovies Where m gt m Actors ToLower Contains q ToLower 在部分q ToLo
  • 从 Dropbox 获取直接文件链接

    有没有办法在 Android 代码中从 Dropbox 获取 直接文件链接 而不使用 Dropbox API 我对此进行了很多搜索 但没有找到解决方案 任何回应将不胜感激 获取文件链接例如https www dropbox com s bl
  • VS中如何选择重载方法建议顺序?

    假设一个类有一些具有相同名称和不同参数的方法 我如何告诉 VS 按特定顺序建议它们 这是不可能的 简单 重载按参数数量升序排列 怀疑您确实需要编写一个插件
  • automapper 带有动作的地图集合

    我有以下代码 IList