问题标签 [ninject-extensions]
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.
c# - Ninject XML 扩展 - 插件架构
我正在使用 ninject xml 扩展来为同一个可执行文件(插件)配置不同的 DAL。我的想法是将所有这些(DLL)与 ninject xml 文件一起放在主应用程序的子文件夹中。
问题是ninject 在xml 中找不到引用的绑定。仅当我将 dll 复制到主应用程序 (.exe) 的同一文件夹时,它才有效。
我试图在加载内核之前加载 dll
但还是不行。(错误:“无法解析在 'to' 属性中定义的类型 'MyType'”)
有人知道在 ninject-xml 文件中引用具体文件夹或从另一个文件夹加载类型的方法吗?可以使用 ninject-xml 扩展名解决?
c# - Ninject 在具有多个程序集的 WebApi 项目中引发激活异常
我的 asp.net WebApi 项目由服务、核心和数据访问的多个程序集组成。为了在项目中使用 Ninject 作为我的 DI 容器,我从 NuGet 添加了 Ninject.Web.Common 包。然后,我将 IDependencyResolver 实现为:
这是我的 Ninject.Web.Common.cs。
例外是
我使用了各种注册(注释掉),但没有一个工作。NinjectWebCommon.cs -> CreateKernel() 方法中的断点被命中,GetService(System.Type serviceType) 方法中的断点也是如此。AppDomain.CurrentDomain.RelativeSearchPath 解析到应用程序的 bin 目录,它包含所有 dll,包括 System.Web.Http.dll,其中包含 IHostBufferPolicySelector 类型。
如何正确使用 Ninject.Extensions.Conventions 设置内核以进行类型解析?
ninject - Ninject拦截:服务调用被拦截的方法在自身内部调用时未被拦截
我有一个注入了 Ninject 3.0 的服务类。我已经设置了它,所以它的代理是类代理而不是接口代理。该服务有 2 种方法,第一种方法返回广泛的结果,第二种方法调用第一种方法并对其进行过滤。我添加了一个拦截器来缓存第一种方法的结果。
当我从服务外部调用第一个方法时,拦截工作正常。
问题是当拦截器调用第二个方法时,它是通过服务本身而不是通过代理调用它,导致我从我的服务调用第一个方法没有被拦截,因此没有被缓存。
我怎样才能让它工作?
更新:添加了示例代码
如果有任何东西似乎没有编译,这在我的头上很抱歉
这是服务类的示例
CacheMethodOutputAttribute 是一个简单的属性类
这是一个示例绑定(这是我确保使用类代理而不是接口代理但实际上通过接口保留注入引用的方式)
因此,当我从注入 IService 的任何类调用 GetObjects 时,会触发拦截器,但不会从 Service 本身的 GetObject 方法触发。
CacheAttributeInterceptor 看起来像这样(但实现细节无关紧要):
c# - Ninject Interception 3.0 接口代理方法属性
我刚刚将一个相对较大的代码库从 Ninject 2.2 升级到了 Ninject 3.0。一切似乎都按计划进行,除了我必须对我们使用的拦截内容进行一些更改。
这个精简版是我们过去在 Ninject 2.3 中发挥出色效果的版本。因为不允许使用接口代理,所以我们将所有方法都标记为虚拟,这使得 Castle 动态代理能够覆盖它们。
现在我想将 [LogMethod] 移动到接口级别以使用接口代理:
但是,当我移动它时,Ninject 不再检测到我要拦截这个类。此外,如果我保持原样,则会出现一个更微妙的问题:
这invocation.Request.Method
是来自接口的 MethodInfo IFoo
- 不是实现Foo
,这意味着我无法再检索我的属性。所以我暂时陷入了这两个问题之间——如果我把属性放在接口中,Ninject 不会创建代理,如果我把属性放在实现中,我不能轻易地检索我的属性来访问它的属性。目前我唯一的解决方案是:
或者使用 InterfaceMapping 将我的 IFoo 转换MethodInfo
为invocation.Request.Target.GetType()
(返回实现类型 - Foo
)MethodInfo
。
有什么建议吗?
c# - 如何使用 Ninject.Extensions.Logging 在 void Main 中获取 Logger?
我正在使用Ninject
我的 DI 和Ninject.Extensions.Logging
(使用 NLog)进行 Logger 注入。我想在程序开始时在我的 Main void 中获取一个 Logger 实例。
我试过这段代码:
但我得到一个错误Error loading module 'Ninject.Extensions.Logging.NLog2.NLogModule' of type NLogModule
。
如何在此方法中获取 Logger 实例?
asp.net-mvc - 如何连接 Ninject 拦截模块?
我通过 NuGet 安装了 Ninject、Ninject.Extensions.Interception 和 Ninject.Extensions.Interception.DynamicProxy,并且我有以下模块
TimingInterceptor 在哪里
现在,当我尝试将模块与 ninject 内核连接并运行我的站点时
我收到以下错误,
基本上,每当调用操作方法时,我都会尝试为我的 ASP.NET MVC 应用程序进行日志记录,我想记录某些事情。但不知道如何解决这个错误。有经验的人可以指出我做错了什么吗?谢谢。
c# - NInject 3 约定 NInject 属性没有被注入
对于具有以下构造的类,构造函数注入效果很好,但不是属性。我还需要在约定中添加什么才能使Inject
属性起作用
NInjectWebCommon.cs 中的绑定
c# - 如何将 WSHttpBinding 添加到 NinjectServiceHostFactory
在我的NinjectWebCommon类在App_start中运行之后,我将我的 WCF 接口绑定到如下服务:
如何告诉系统接受对IAccountService的WSHttpBinding调用?
这是我的 .svc 供参考:
(注意:我正在使用Ninject.Extensions.Wcf并且只有BasicHttpBinding似乎“开箱即用”)
c# - 使用 Ninject Dependency Creator 和 Event Broker 进行生命周期管理
我在一个相当大的项目中使用 Ninject,并希望利用Dependency Creation和 Event Broker 扩展。
依赖创建自述文件给出了以下示例(尽管我相信InCreatorScope
可能已重命名为InDependencyCreatorScope
现在)
这个例子通过容器创建了一个依赖关系,它们之间Parent
和Dependency
没有它们之间的“硬”引用。这促进了组件之间的松散耦合,并允许我使用 Event Broker 来发布事件Parent
并订阅它Dependency
,而无需显式连接事件处理程序。
我的问题是:如果Dependency
注入其他对象并且我希望它具有RequestScope
标准激活的生命周期怎么办?我如何声明我想使用 Request 范围进行标准激活,但在创建时使用依赖创建者范围Parent
?
ninject - Ninject DependencyCreation 和 EventBroker 扩展。确保一对一订阅
我正在使用 Ninject Event Broker 扩展,我有两个服务。ServiceOne
是事件的发布者。ServiceTwo
是订户。ServiceOne
没有硬依赖ServiceTwo
,我正在使用 DependencyCreation 扩展创建依赖。
以下是要求:
- 我想在这两个对象之间定义一个一对一的事件。只有
ServiceTwo
DependencyCreation 创建的实例应该接收该事件。 - 如果在对象图中还有其他
ServiceTwo
进一步向下的实例,则它们不应收到该事件。(这不应该是这种情况,但我想说明它) ServiceTwo
应在处置时ServiceOne
处置。- 这是一个 Web 应用程序,它的生命周期
ServiceOne
应该只针对一个请求。
基本上我只是想重现我写作的行为:
一位出版商。一名订户。订阅者 2 没有收到该事件。
这是我的代码:
两个问题。
这能满足我的要求吗?有没有更好的办法?