如何将对象注入 Ninject 模块

2023-12-07

我正在使用 Ninject 进行 DI。我有 Ninject 模块,它将一些服务绑定到内核,并使用其他模块中的绑定对象作为服务。 为了弄清楚这种情况,让我们看几行代码: 这是我的安全模块。它提供了一个名为PermissionManagerContainer.

public class SecurityModule : NinjectModule
{
    public override void Load()
    {
        Bind<IPermissionManagerContainer>().To<PermissionManagerContainer>().InSingletonScope();
    }
}

另一方面我有一个FormServices应该将项目添加到注入的模块PermissionManagerContainer。我想代码一定是这样的:

public class FormServicesModule : NinjectModule
{
    [Ninject.Inject]
    private IPermissionManagerContainer permissionManagerContainer { get; set; }

    public override void Load()
    {
        permissionManagerContainer.RegisterManager(formServicesPermissionManager);
    }
}

所以在一个名为ManagePermissions.aspx我再次注入PermissionManagerContainer并为所有模块的权限管理器创建用户界面。例如,我需要保护 FormServices 模块中的表单,并为该服务中的每个表单定义权限。

但我认为不能保证绑定PermissionManagerContainer在将其注入另一个模块之前!

其实对于这个问题我有自己的解决办法。我可以编写一个名为 MyModule 的抽象类(它是 Ninject Module 的子类),并编写一个名为 Initialized Module 的抽象方法。并打电话RegisterManager在那个方法中。然后在加载内核中的所有模块后,为每个加载的模块调用InitializeModule。

但我的问题是:

  1. Ninject 内部有这个功能吗?
  2. Ninject 可能会在内部管理此案例,我可以致电RegisterManager在加载方法中。这是真的吗?

您误解了模块的用途。他们的作用是配置 Ninject。他们本身不应该有任何依赖性。 RegisterManager 属于应用程序的服务或启动操作中的某个位置。或者您可能必须更改权限管理器的工作方式,以便枚举所有配置的管理器而不是注册它们。但几乎不可能从这个问题中看出什么是最好的——只是你正在滥用模块来完成它们不该做的事情。

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

如何将对象注入 Ninject 模块 的相关文章

  • 将 SQL Server varBinary 数据转换为字符串 C#

    我需要帮助弄清楚如何转换来自SQL服务器表列设置为varBinary 最大 转换为字符串以便将其显示在标签中 这是在C 我正在使用数据读取器 我可以使用以下方式提取数据 var BinaryString reader 1 我知道该列包含之前
  • is_integral 与 is_integer:其中之一是多余的吗?

    是积分 http en cppreference com w cpp types is integral and 是整数 http en cppreference com w cpp types numeric limits is inte
  • 如果两个线程同时访问同一个 bool 变量会发生什么?

    我有一个跨平台 C 程序 其中使用 boost 库创建异步计时器 我有一个全局变量 bool receivedInput false 一个线程等待并处理输入 string argStr while 1 getline cin argStr
  • 如何通知父线程所有子线程都已终止?

    我有一个控制台应用程序正在移植到 WPF 该应用程序有 3 个工作线程 在将一些输出结果打印到屏幕上之前 这些线程都连接到主线程 我的理解是 如果我尝试在 WPF 应用程序中执行相同的操作 GUI 将被阻止并且不会响应用户 那么如何通知父线
  • C++ 和序列化:有什么方法可以进行某种内省吗?

    我读过一些例子维基百科 http en wikipedia org wiki Type introspection C 2B 2B但我正在寻找一些现实生活中的例子 如何使用内省 为什么 它有助于编写干净的代码 以及代码本身 例如 有没有办法
  • 当 f & g 修改同一个全局变量时,表达式 f() > g() 的值是否未定义或未指定?

    UPDATE 由用户标记ecatmur 它是重复的在 C99 中 f g 是未定义还是只是未指定 https stackoverflow com questions 3951017 in c99 is fg undefined or mer
  • 比较 LINQ to SQL 中的两个日期

    我有一个数据库 其中有一个名为会议的表 会议日期使用以下格式存储在此表中 May 2nd 2011 例如 格式为5 2 2011 我的要求是获取两个日期 例如 2011 年 4 月 25 日和 2011 年 5 月 2 日 之间的会议 并编
  • 计算复杂数组的abs()值的最快方法

    我想计算 C 或 C 中复杂数组元素的绝对值 最简单的方法是 for int i 0 i lt N i b i cabs a i 但对于大向量来说 速度会很慢 有没有办法加快速度 例如使用并行化 语言可以是 C 或 C 鉴于所有循环迭代都是
  • 增量决策树 C++ 实现

    有谁知道决策树分类器的增量实现吗 这样 当您将新实例添加到训练集中时 它可以根据现有决策树分类器以低计算量并尽可能快地生成最佳决策树分类器 换句话说 我有一个最优决策树分类器集A 其中命名为T 1 现在我想添加实例X to set A并找到
  • 以编程方式运行 T4 文本模板

    有没有一种方法可以通过代码以编程方式运行 T4 文本模板 我正在制作一种自定义域特定语言 我希望相关的文本模板在用户每次保存时运行 目前 这就是我在 DSL 模型中所做的事情 protected override void OnDocume
  • 函数指针上的未知类型 F TYPE

    include
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • 如何删除实体框架6中的多对多关系

    如果将项目连接为多对多关系 则从数据库中删除项目时会出现问题 我的数据库看起来像 Project lt JobInProject gt Job ProjectID JobInProjectID JobID ProjectID JobID 主
  • C 中的链表数组:初始化和插入?

    我需要创建一个链表数组 如图所示 这就是我到目前为止所做的 typedef struct Node int data struct Node next Node int main void Node link 5 for int q 0 q
  • 从视图模型调用方法的命令

    好吧 我倾向于避免使用命令 因为它们总是让我感到困惑 但我正在进行一个新项目 并且正在尝试正确构建它 并且在我看来没有任何代码隐藏 基本上我现在想做的就是连接一个按钮来触发一个命令 在我的视图模型上执行一些操作 但不知何故 如此简单的事情仍
  • 类型别名和不完整类型

    我可能已经超出了解决这个本应简单的问题的范围 我在这里开始这个问题 在编译时获取基类的类型 https stackoverflow com questions 17735852 getting type of a base class at
  • 如何在 Visual Studio 2010 Express 中引用 system.drawing?

    我对此有点陌生 我的印象是要绘制我创建的矩形 我需要使用 system drawing graphics 问题是 我收到错误 命名空间 System 中不存在类型或命名空间名称 drawing 您是否缺少程序集引用 当我右键单击解决方案资源
  • 如何创建和使用类箭头运算符? [复制]

    这个问题在这里已经有答案了 因此 在到处研究之后 我似乎找不到如何创建类箭头运算符 即 class Someclass operator gt 我只需要知道如何使用它并正确使用它 它的输入是什么 它返回什么 我如何正确地声明 原型化它 运算
  • 使用 MVC5、Ajax、C# 和 MSSQL Server 级联 DropdownList

    我对来自 Windows 窗体和三层架构的 MVC 非常陌生 我试图找出使用从数据库填充的级联下拉列表 DDL 我使用 MS SQL Server 2012 VS 2013 目前我正在研究用户调查问卷 用户可以从 DDL 的多个答案中进行选
  • 替换全局热键

    我有一个位于托盘中的应用程序 我想定义多个热键来触发我的程序中的事件 我从 AaronLS 在这个问题中的出色回答中找到了灵感 使用C 设置全局热键 https stackoverflow com a 27309185 3064934 如果

随机推荐

  • 在 doxygen 布局中添加新用户选项卡

    我是使用 doxygen 1 8 7 的新手 我正在尝试将架构图添加为使用 doxygen 为我的 C 项目生成的 API 文档的一部分 我生成了默认的 doxygen 布局文件 DoxygenLayout xml 并通过添加以下更改来编辑
  • 将 ID 更改为其他字符串时链接 URL 中断

    我在 URL 示例 service detail 1 中有 ID 该 ID 工作正常 后来我将路由重定向到 service detail abc 但该 url 不起作用 我不确定错误是什么 我得到的路线像
  • Symfony2 记录 404 错误

    我需要能够在发生 404 错误时记录 接收电子邮件 我可以在文档中看到如何为这些错误设置新模板 但是如何首先在控制器中捕获它们 以便可以实现日志记录 电子邮件逻辑 也许添加一个监听 kernel exception 事件的事件监听器就可以了
  • 更新 MongoDB 中的嵌套对象(如果存在),否则添加它

    我在 mongoDB 中有一个像这样的 json 文档 id ObjectId 57ed88c0965bedd2b11d5727 refid 2 votes ip 127 0 2 1 rating 5 ip 127 0 3 1 rating
  • Java InputStream 在线程中关闭

    我正在尝试从线程中的输入流读取 线程应该运行的类如下所示 static private class Runner implements Runnable private InputStream fis private OutputStrea
  • 通过 REST 工具测试 WebAuthn?

    是否可以通过休息工具在本地进行测试 我已经创建了后端来生成用于注册新信用的质询等 但是如果没有 WebAuthn 响应 如果我创建了正确的方法来消化来自 WebAuthn 的响应对象 我就会不知所措 如果您正在编写 FIDO2 WebAut
  • Eclipse JavaDoc 生成失败并出现 IllegalArgumentException?

    当我尝试为任何 javadoc 注释类导出或生成 javadoc 时 我总是收到错误 直到最近它才生成完全空的 html 文件 这是我之前收到的错误 Constructing Javadoc information Standard Doc
  • 如何使用 Material-UI ThemeProvider 和 createGenerateClassName 避免类名冲突

    想知道是否有人可以阐述如何避免这样一种情况 React 应用程序使用 makeStyles 中的material ui classNames 并且其中包含一个也执行此操作的包 因此有两个名称生成器 导致多个相互冲突的 jss1 jss2 等
  • 在 R/Tidyeval 中的 RHS 上使用类胶水结构

    我花了几个小时试图在公式的 RHS 上粘上胶水 但没有任何线索 这是一个简单的表示 meta lt function x var suffix x lt x gt mutate var suffix 5 x lt x gt mutate v
  • 复杂 JSON 对象的 C# 数据协定

    这可能是非常简单的事情 我到处寻找并尝试了我能想到的一切 因此 如果这是一个简单的搜索并且我只是在寻找错误的东西 我深表歉意 我对数据契约和 JSON 也很陌生 所以这可能并不是那么复杂 我正在创建一个 API 来摄取 JSON 并将其存储
  • UIScrollView滚动时如何向一个方向移动

    我是 Objective c 的新手 我创造UIScrollView对象并使用以下代码添加到我的视图中 height self view frame size height width self view frame size width
  • Woocommerce aJax 将优惠券代码应用到购物篮

    我试图在按下按钮时将优惠券代码应用到购物篮 我有以下代码 coupon jQuery this data coupon data coupon code coupon jQuery post wc ajax apply coupon cou
  • cin 还是 printf?

    在使用 c c 工作时 1 cin cout 或者 2 scanf printf 两者中哪一个的执行或运行时间会更少 或者两者都有相同的运行时间 我的目标是减少代码的运行时间 投注相对时间控制台IO功能是恕我直言 没有任何实际用途 这是完全
  • 在单个服务器上单独的 Git 部署

    我希望我的应用程序中有一个功能 允许用户在版本之间进行更改 特别是查看冲刺之间应用程序的差异 用户只需从下拉列表中选择一个版本 Sprint A Sprint B 等 页面就会刷新 显示当时应用程序的状态 这本身应该不是什么太大的问题 我认
  • 强大的哈希字符串函数并恢复它

    我正在寻找一个强大的哈希函数 算法 来对我的代码进行哈希处理 我想将散列字符串恢复为原始字符串 我可以恢复sha到原来的 你能帮助我吗 您无法从哈希恢复原始数据 因为它在设计上是不可逆的 通常的解释是鸽巢原理 大多数哈希值约为 128 25
  • 创建框架时 Xcode 8 中未找到 filename.h 文件错误

    我正在尝试使用以下步骤创建一个框架https www raywenderlich com 65964 create a framework for ios 我已将框架文件导入到项目中 我可以为框架文件创建对象并访问方法 但是当我构建项目时
  • Android - WebView 不播放 YouTube 视频

    我有一些 WebView 代码 我试图用它在 YouTube 频道上播放 YouTube 视频 但它所做的只是在视频上显示旋转图标 而从未真正启动视频 有人知道如何解决这个问题吗 public class YoutubeActivity e
  • PHP 回发 url 谷歌钱包 IAP

    我的谷歌钱包应用内支付的回发 php 如下所示
  • 使用数组参数调用本机函数

    我完全不知道如何使用数组参数调用本机 dll 中的函数 Example 该函数在 C 项目中定义为 DllImport Project2 dll SetLastError true CallingConvention CallingConv
  • 如何将对象注入 Ninject 模块

    我正在使用 Ninject 进行 DI 我有 Ninject 模块 它将一些服务绑定到内核 并使用其他模块中的绑定对象作为服务 为了弄清楚这种情况 让我们看几行代码 这是我的安全模块 它提供了一个名为PermissionManagerCon