忍者绑定

2023-12-13

如何将我的接口绑定到不同程序集中的具体类?

我的解决方案中有以下项目:

Foo.Data
Foo.域名

在 Structure Map 中,我将两个程序集名称添加到 StructureMap.config 文件中,然后使用 PluginFamily 和 Pluggable 属性将我的接口映射到我的具体类。

如何使用 Ninject 完成同样的事情?


我将在这里做一些假设。

  1. 您的 Foo.Domain 项目中有一个名为 IBar 的接口,并且您的 Foo.Data 项目中有一个名为 BarClass 的具体类。
  2. 事实上,您在 Foo.Data 项目中引用了 Foo.Domain 项目,因为 BarClass 实现了 IBar。

使用 Ninject 要做的最简单的事情是在 Foo.Data 中创建一个派生自 Ninject 的 StandardModule 的新类:

internal class BarModule : StandardModule {
  public override void Load() {
    Bind<IBar>()
      .To<BarClass>();
  }
}

然后,该类建立 IBar 请求与 BarClass 具体类的绑定。这是您的 XML 等效项。

下一步是创建 Ninject 内核(又名“容器”)并向其提供此模块(即此配置)。在哪里执行此操作很大程度上取决于您要创建的应用程序类型。一般来说,您通常会在代码的逻辑入口点或“启动”部分配置内核。如果它是控制台或 Windows 桌面应用程序,这可能是 main() 函数首先要做的事情之一。

代码会是这样的:

var modules = new IModule[] {
                              new BarModule()
                            };

var kernel = new StandardKernel(modules);

此时,当您执行以下操作时:

var barObj = kernel.Get<IBar>()

变量 barObj 引用 BarClass 的实例。

总而言之,我很可能无法完全理解您的应用程序的所有细微差别 - 例如程序集是动态加载的,等等。无论如何,希望这能有所帮助。

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

忍者绑定 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 空指针与 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
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l

随机推荐

  • 根据节点属性 NetworkX 将图划分为太阳图

    我正在使用 Networkx 来计算图的一些度量 例如直径 聚类系数等 如何对整个图执行此操作很简单 我感兴趣的是在具有相同属性 例如颜色 的节点之间找到这些度量 我在想如果我可以将图划分为不同的子图 其中每个子图中的节点具有相同的颜色 那
  • 从字典中获取一些默认值与 None 不同的值 (Python)

    我不太喜欢这样 使用多个键查找字符串访问 python 字典 So In 113 d a 1 b 2 In 114 va vb map d get a b In 115 va vb Out 115 1 2 But In 116 va vb
  • 如何在Win8开始屏幕上自动创建磁贴?

    我正在尝试构建一个 win8 应用程序 我想在用户安装它后自动在开始屏幕上创建一个磁贴 我做了一些搜索 但他们都在谈论如何制作图块 但我希望它显示在开始屏幕上 而不是 应用程序 屏幕上 任何人都可以帮助并告诉我如何做到这一点或给我一些有用的
  • 升级到 8.8 后,Solr 在部分更新时抛出错误

    我正在做一个简单的部分更新场景 适用于 Solr 6 x 和 7 x 版本 将 Solr 和 Solrj 升级到 8 8 后 出现以下异常 2021 02 23 14 57 58 201 ERROR qtp 459670553 28 x c
  • 如何查找给定日期最近的日期(一周中的某一天)

    我一直在练习查询 我当前的情况是找到给定日期最近的星期六 在我弄清楚逻辑之后 我想出了一个 看起来像是一个又长又乱的查询 我想知道是否有一种方法可以简化这个过程 这是我的查询 DECLARE DATE DATE SET DATE 2013
  • Nsight 远程调试器设置

    我正在尝试设置远程 Nsight v2 2 调试器 仅用于 GPU 调试 无 CUDA 我已经关注了这个英伟达 pdf用于设置远程目标机器和开发机器 一切都已启动并正在运行 但两者之间的通信不正常 我收到诸如 MSVSMON exe 未在远
  • 在 mailto 正文中插入换行符

    我想在我的 mailto 正文中插入换行符 我尝试了 0A 0D 和 0D 0A 没有什么对我有用 我在 Mac OSX 上使用 Google Chrome 测试了 Gmail Yahoo Apple Mail Outlook 2010 O
  • 在 D3 中换行文本

    我想让文本绕在下面的 D3 树上 这样就可以了 Foo is not a long word 每行都换行为 Foo is not a long word 我尝试将文本设置为 foreignObject 而不是文本对象 文本确实会换行 但它不
  • 使用未修饰的窗口启动 Tkinter

    使用 Python 2 和 Tkinter 如何在窗口上方没有标题栏的情况下启动 Tk 窗口 from Tkinter import root Tk frame Frame root frame pack bottomframe Frame
  • 使用 typescript 导入外部 javascript 的最佳方法

    目前 如果我想将外部代码加载到我的打字稿文件中 我有两种不同的方法 如果我引用另一个打字稿文件 我必须写 import object require path to the internal module 但如果我从现有的 js 文件加载代
  • 具有自定义 HTTP 和 ConfigService 的循环依赖的 DI

    我正在尝试实现 ConfigService 来检索项目中正确环境的正确配置 我目前遇到了循环依赖 index 28 Error SystemJS Provider parse errors Cannot instantiate cyclic
  • 查看 Node.js String.prototype 的方法?

    在 Node js REPL 中 如果您输入String prototype 一个空对象 被返回 但是 如果您在 Chrome JavaScript 控制台中键入它 则会返回一个带有预期函数名称和功能的对象 为什么 Node js 没有表现
  • 启动项目时出现无法理解的错误(gradle)

    我连接了一个库compile com balancedpayments balancedpayments 1 4 去项目时没有错误 但是当我尝试运行时 我看到错误 Executing tasks app assembleDebug Conf
  • PHP header() 不起作用

    有人知道为什么我的 header 不重定向吗 我的脚本的最后一部分是 header location test php die died 它写道 died 它应该在死亡之前重定向 但它没有 你有什么想法吗 您可能正在调用 header af
  • JSONB sqlalchemy 聚合函数

    使用 SQLAlchemy 我想重现可用的聚合函数来自子查询的 jsonb object aggsq objects from sqlalchemy import select func s select sq objects c obje
  • 为什么将 html 代码打印为字符串会给出十六进制数字作为 python 中的输出?

    我写了一个Python代码来修改我的html内容 但是在再次将其写入 html 文件时 我得到了奇怪的十六进制数字 import re search www abc com description blah blah f open myht
  • 将三个js的IIFE函数转换为es6?

    我正在尝试将我的 Threejs 项目分解为更小的模块 但我遇到了困难 以这个函数为例 var updateCamera function var euler new THREE Euler 0 0 0 YXZ return functio
  • Python删除组合字典列表中的重复值

    我需要一点家庭作业帮助 我必须编写一个将多个字典组合成新字典的函数 如果某个键出现多次 新字典中与该键对应的值应该是唯一的列表 作为一个例子 这是我到目前为止所拥有的 f a apple c cat b bat d dog g c car
  • 如何使用make_cudaExtent正确定义cudaExtent?

    我想在 CUDA 中有一个 3d 浮点数组 这是我的代码 define SIZE X 128 numbers in elements define SIZE Y 128 define SIZE Z 128 typedef float Vol
  • 忍者绑定

    如何将我的接口绑定到不同程序集中的具体类 我的解决方案中有以下项目 Foo DataFoo 域名 在 Structure Map 中 我将两个程序集名称添加到 StructureMap config 文件中 然后使用 PluginFamil