问题标签 [ninject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1646 浏览

c# - 如何让 Ninject 2 为 LINQ to SQL DataContext 使用无参数构造函数?

我已经开始使用 Ninject 2(昨天从 Github 下载,包括 MVC 扩展项目)和一个基于以下技术的项目:

  • .Net 3.5 Sp1
  • ASP.NET MVC 1.0
  • LINQ 到 SQL

这里没有什么神奇的——我有一些存储库接口(命名为 IEntityRepository),它们是在运行时代码中使用 LINQ to SQL 实现的(并在单元测试代码中使用哈希表)。这些存储库中的每一个都需要一个从 LINQ 到 SQL 的 DataContext 实例,以便与数据库通信,因此这是具体存储库类的构造函数参数。绑定设置如下:

这样做的原因是,如果我碰巧需要更多实体,我希望能够在不同的存储库之间共享它们,并且使用 LINQ to SQL 数据上下文工作单元的理念,对我来说创建一个似乎是有意义的Http请求。

我通常对 MyDataContext 使用无参数构造函数——我不认为这是一种风险,因为它用于测试系统上的内部项目,因此数据上下文中的“内置”连接字符串是无害的。但是,由于 Ninject 2 是“贪婪的”并且想要具有 MOST 参数的构造函数,并且我不能[Inject]以任何有意义的方式将参数真正粘贴到生成的代码中,所以每当 Ninject 尝试创建我的一个控制器时,我都会收到错误消息(需要一个存储库,它需要数据上下文)。

我已经看到提到IConstructorScorer并能够制作一个始终使用带有 LEAST 参数的构造函数的“倒置”函数,但话又说回来,这将改变注入对其他所有事物的工作方式——默认行为可能是我想要的一切但数据上下文。

那么 - 有没有一种很好、干净的方法来指定这个绑定(并且只有这个绑定)应该使用一个特定的构造函数?我们是否可以像在 Ninject 1 中那样对提供者做同样的事情,或者提供我们自己的“工厂”?还是我应该放弃并尝试将参数输入到有意义的数据上下文中?

0 投票
2 回答
1989 浏览

.net - 如何将对象注入 WCF 验证器类

跟进对WCF 服务使用依赖注入,是否有任何方法可以将 DI 用于 WCF验证器,以便可以这样做:

编辑 - 我试图将 Dzmitry 的建议应用于我的自定义行为扩展,因为我的验证器是在 app.config 中定义的。可悲的是,我得到了 MethodMissingException,因为 wcf 希望我的验证器有一个默认构造函数:

System.MissingMethodException: No default constructor has been defined for this object.

at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)

这是我的行为课:

0 投票
2 回答
2554 浏览

dependency-injection - 在 Ninject 中,如何在使用 Bind<..>.ToSelf() 创建对象后在对象上运行自定义代码?

在 Ninject 的依赖注入中,如果你像这样设置一个类到自身的绑定:

Ninject 很好地解决了 SomeClass 的任何依赖关系,并将对象返回给您。我希望能够对它每次创建一个新的时返回的 SomeClass 做一些事情,就像一个后处理事件一样。我可以使用 .ToMethod(或 ToFactoryMethod)绑定来显式地新建它,但我希望它的所有依赖项都由 Ninject 预先解决。

做这样的事情会很好:

在 Ninject 1.0/1.1 中有什么方法可以做到这一点吗?

0 投票
7 回答
3586 浏览

.net - 许多“小”组件的具体缺点?

我正在计划一些工作,将依赖注入引入当前的大型单体库,以使该库更易于单元测试、更易于理解,并且可能更灵活。

我决定使用NInject,我真的很喜欢 Nate 的座右铭“做一件事,做好”(意译),而且在 DI 的背景下它似乎特别好。

我现在一直想知道的是,我是否应该将当前的单个大型组件拆分为具有不相交功能集的多个较小组件。其中一些较小的程序集将具有相互依赖关系,但远非全部,因为代码的体系结构已经非常松散耦合。

请注意,这些功能集本身也不是微不足道和小...它包含诸如客户端/服务器通信、序列化、自定义集合类型、文件 IO 抽象、通用例程库、线程库、标准日志记录等。

我看到之前的一个问题:多个小组件或一个大组件哪个更好?kind-of 解决了这个问题,但似乎比这更精细,这让我想知道那里的答案是否仍然适用于这种情况?

此外,在与该主题相关的各种问题中,一个常见的答案是“太多”组件会导致未指明的“痛苦”和“问题”。我真的很想具体了解这种方法可能存在的缺点。

我同意在只需要 1 个程序集之前添加 8 个程序集“有点痛苦”,但是必须为每个应用程序包含一个大的单体库也不是很理想......加上添加 8 个程序集是你只做的事情有一次,所以我对这个论点没有什么同情心(即使我一开始可能会和其他人一起抱怨)。

附录:
到目前为止,我还没有看到反对小型集会的令人信服的理由,所以我认为我现在会继续进行,就好像这不是问题一样。如果有人可以用可验证的事实来想出充分的理由来支持它们,我仍然很想听听它们。(我会尽快添加赏金以提高知名度)

编辑:将性能分析和结果移到单独的答案中(见下文)。

0 投票
1 回答
927 浏览

silverlight - 我可以在 Silverlight 中使用 Ninject 进行 Prism 事件聚合吗?

我正在考虑使用 Prism 在 Silverlight 3 中做一个项目,我真的很喜欢这里显示的事件聚合http://development-guides.silverbaylabs.org/Video/Prism-Eventing

所有资源似乎都指向使用 Unity 和 Prism 而不是 Ninject。在 Ninject 中是否有类似的聚合事件方式?或者如果我想使用 Prism,我是否仅限于 Unity?

0 投票
2 回答
1213 浏览

asp.net-mvc - Ninject没有开火?

我第一次尝试设置 Ninject。我有一个 IRepository 接口和一个 Repository 实现。我正在使用 ASP.NET MVC,我正在尝试像这样注入实现:

这是 Global.asax:

这是 BaseModule 类:

但是,当我浏览到 Index() 操作时,在尝试使用 _repo.Insert(b) 时出现“对象引用未设置为对象的实例”。我遗漏了什么?

0 投票
1 回答
6079 浏览

c# - Ninject 绑定

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

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

Foo.Data
Foo.Domain

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

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

0 投票
2 回答
1747 浏览

unit-testing - Ninject 等效于 Unity RegisterInstance 方法

Ninject 是否有统一的注册实例的等效方法。

我想创建一个模拟对象并注册它。

谢谢

0 投票
6 回答
4956 浏览

c# - Ninject 内核绑定覆盖

我只是想知道在内核中重新连接绑定的最佳实践是什么。

我有一个带有内核的类和一个带有默认生产绑定的私有类模块。

对于测试,我想覆盖这些绑定,以便可以交换我的 Test Doubles / Mocks 对象。

覆盖 IDepend 的任何现有绑定?

0 投票
2 回答
1545 浏览

asp.net - Ninject、ASP.NET 和自定义控件

我目前正在使用 ASP.NET(标准,而不是MVC)并且我使用 Ninject 作为我的 IOC 容器。

我已经在使用它将依赖项注入到我的页面中,但是,我想知道是否有办法将依赖项注入到我的自定义控件中?

如果没有,我将开始扩展 Ninject :)