AutoMapper 4.2 和 Ninject 3.2

2024-02-26

我正在更新我的一个项目以使用 AutoMapper 4.2,并且遇到了重大更改。当我seem为了解决上述更改,我并不完全相信我已经以最合适的方式做到了这一点。

在旧代码中,我有一个NinjectConfiguration, 和AutoMapperConfiguration每个类都由 WebActivator 加载。在新版本中AutoMapperConfiguration退出,我改为实例 aMapperConfiguration直接在NinjectConfiguration发生绑定的类,如下所示:

private static void RegisterServices(
    IKernel kernel) {
    var profiles = AssemblyHelper.GetTypesInheriting<Profile>(Assembly.Load("???.Mappings")).Select(Activator.CreateInstance).Cast<Profile>();
    var config = new MapperConfiguration(
        c => {
            foreach (var profile in profiles) {
                c.AddProfile(profile);
            }
        });

    kernel.Bind<MapperConfiguration>().ToMethod(
        c =>
            config).InSingletonScope();

    kernel.Bind<IMapper>().ToMethod(
        c =>
            config.CreateMapper()).InRequestScope();

    RegisterModules(kernel);
}

那么,这是使用 Ninject 绑定 AutoMapper 4.2 的合适方法吗?到目前为止似乎有效,但我只是想确认一下。


之前,库中不存在 IMapper 接口,因此您必须实现下面的接口和类并将它们绑定为单例模式。

public interface IMapper
{
    T Map<T>(object objectToMap);
}

public class AutoMapperAdapter : IMapper
{
    public T Map<T>(object objectToMap)
    {
        //Mapper.Map is a static method of the library!
        return Mapper.Map<T>(objectToMap);
    }
}

现在您只需将库的 IMapper 接口绑定到 mapperConfiguration.CreateMapper() 的单个实例

你的代码有问题,你应该使用单个实例(或者如 Ninject 所说,一个常量)绑定。

// A reminder
var config = new MapperConfiguration(
    c => {
        foreach (var profile in profiles) {
            c.AddProfile(profile);
        }
    });
// Solution starts here
var mapper = config.CreateMapper();
kernel.Bind<IMapper>().ToConstant(mapper);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AutoMapper 4.2 和 Ninject 3.2 的相关文章

随机推荐

  • 为什么 opencsv 在写入文件时将 csv 标头大写

    使用 OpenCSV 4 6 将 Bean 写入 CSV 文件时 所有标题都更改为大写 尽管 bean 有 CsvBindByName 注释 但它正在更改为大写 Java 豆 public class ProjectInfo impleme
  • 如何在 SQLCMD 中抑制连字符

    如何从结果集中抑制连字符 sqlcmd命令 C temp gt sqlcmd d AdventureWorks s Q SET NOCOUNT ON SELECT top 5 FirstName LastName FROM Person C
  • 在 Windows 上将 PPT 转换为 JPG/PNG

    我想在 Windows 环境中以编程方式转换一组图像中的 ppt 演示文稿 每张幻灯片一个 我尝试修改以下将 ppt 转换为 pdf 的代码 完美工作 但没有成功 谁能帮我 多谢 Option Explicit Sub WriteLine
  • Pandas 显示 Excel 文件的额外未命名列

    我正在开发一个使用 pandas 库的项目 其中我需要读取一个包含以下列的 Excel 文件 invoiceid locationid timestamp customerid discount tax total subtotal pro
  • 桌面应用程序.net中的视频通话

    我正在开发一个 wpf 应用程序 该应用程序应该具有视频通话功能 所以我寻求 Skype 为我提供解决方案 我正在使用 Skype4COM 库来做到这一点 我的应用程序中包含了 Skype 的所有朋友 我可以给朋友打电话 甚至可以进行视频通
  • 判断文件中是否存在字符串

    我有一个字符串列表 例如 John John Doe 彼得潘 在 txt 文件中 我想创建一个循环来检查某个名称是否存在 但是 如果我搜索 Peter 并且只存在 Peter Pan 我不希望这是真的 每行都必须完全匹配 哈哈 ep0的回答
  • 警告 C4267“参数”:从“size_t”转换为“DWORD”,可能会丢失数据

    我正在将代码从 32 位 vs2012 迁移到 64 位 vs2015 我在程序中遇到了以下函数调用 CryptHashData hHash BYTE AUTH ENCRYPTION KEY wcslen AUTH ENCRYPTION K
  • 删除 Meshlab 或 vcglib 中的自相交

    如何使用 Meshlab 应用程序或 vcglib 消除网格的自相交 这超出了范围 但 CGAL 中有一些函数 这仍然是实验性的 没有记录 但您可以使用该功能remove self intersections https github co
  • 不包含适合入口点的静态“main”方法

    我今天开始将代码组织到单独的 cs 文件中 为了允许与 UI 一起使用的方法继续这样做 我将在相同的命名空间和公共部分类名下创建 cs 代码 以便这些方法可以可互操作 我的标头在四个文件中看起来像这样 包括调用的主核心文件 public s
  • 内存警告但活动字节较小

    在我的应用程序中 在重复某些操作 选择图片 处理 多次后 我收到级别 1 的内存警告 然后收到级别 2 的内存警告 然后崩溃 泄漏工具没有显示任何泄漏 我还关注 Instruments 中的分配工具 我的实时字节大约为 4 MB 总共分配了
  • sqldf:从数据帧创建表错误:“没有这样的表”。并创建了两张表而不是一张

    我最近升级了 R RSQLite 和 sqldf 以下版本 通常情况下 sqldf create table foo as select from bar db test db 应该在附加的 sqlite 数据库中创建一个名为 foo 的表
  • 在 Reactjs 中迭代数组

    const cal days Sun Mon Tue Wed Thu Fri Sat const cal months Jan Feb March April May June July August Sept Oct Nov Dec co
  • 组合 Group-Object 和 ForEach-Object?

    我正在开发一个名为Merge Xsd可以合并相似的 XML 模式 它需要一个路径列表 加载模式 合并它们 并生成一个XMLDocument作为输出 特定文件名的所有模式都被认为是 相似的 所以我正在做的就是获取特定目录结构中的所有子项 根据
  • 使用useEffect获取数据时避免使用旧数据

    我的问题是 当自定义挂钩使用useEffect with useState 例如 为了获取数据 在依赖项更改之后但在 useEffect 被触发之前 自定义挂钩会返回过时的数据 来自状态 您能建议一种正确 惯用的方法来解决这个问题吗 我正在
  • 针对具有大量聚合的大型集群的 ElasticSearch 设置

    背景和当前状态 我们正在将集群从 Cassandra 迁移到完整的 ElasticSearch 集群 我们平均索引文档为每秒约 250 300 个文档 在 ElasticSearch 1 2 0 中 它代表每天约 8Go generic i
  • Android 如何避免内存不足错误

    我有很多图像 大约有 500 张分布在 20 个左右的片段中 这些图像都非常小 并且加载得很好 但是我给用户提供了 3 种不同类型的图像的选择 现在如果用户更改图像我收到 OOM 错误 所以我认为这是我处理图像的方式 我认为我需要先回收旧图
  • 基于另一个字段更改 SSRS 中值字符串中特定值文本颜色的表达式

    我的 SSRS 报告中有一个字段 其中包含一串用逗号分隔的数字 来自 SQL 中的合并选择 它看起来像 12 91 160 171 223 如果该值也在报告的另一个字段中 我只想更改该字段中一个特定值 例如 160 的文本颜色 我已经有了这
  • 使用 BigDecimal 计算小数点后的最大位数

    小数点后最多可以有多少位BigDecimalJava 中的值 它 几乎 是无限的 如果将比例设置为整数的最大值 则可以存储大约 20 亿位小数点后的数字 但如果尝试这样做 可能会耗尽内存 如果您需要存储如此多的数字以至于限制成为问题 那么您
  • 如何将UIImage插入到UITextView中

    我正在开发一个可编辑的笔记本类型项目 它随时由一些文本和图像组成 在UITextView如果我们将图像添加为子视图 则帧是固定的 但我有editable选项 所以我必须将图像另存为NSString格式为UITextView 但它应该在 ui
  • AutoMapper 4.2 和 Ninject 3.2

    我正在更新我的一个项目以使用 AutoMapper 4 2 并且遇到了重大更改 当我seem为了解决上述更改 我并不完全相信我已经以最合适的方式做到了这一点 在旧代码中 我有一个NinjectConfiguration 和AutoMappe