问题标签 [ninject-interception]

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 回答
6576 浏览

ninject - 无法让 Ninject.Extensions.Interception 工作

我已经尝试了很长时间来弄清楚这是我们的。当我尝试将我的类与拦截器绑定时,我在线上遇到以下异常

加载 Ninject 组件 IAdviceFactory 时出错。在内核的组件容器中没有注册过这样的组件

我尝试过使用和不使用 LoadExtensions,使用模块来设置我的绑定,我的最后一次尝试看起来像这样

我的记录器属性看起来像这样

我的拦截器是这样的

0 投票
1 回答
173 浏览

ninject - 命名空间级别的 Ninject 拦截?

他们是一种使用 Ninject.Extensions.Interception 扩展设置拦截的方法,以便将其应用于命名空间或程序集中的所有类?

当前,我必须像这样每堂课都这样做

0 投票
2 回答
826 浏览

ninject - Ninject 拦截 - 移植到 Ninject 3.0 时的重大更改

我将描述我的环境:我有 Ninject + Ninject Interception Extension 用于为所有方法启用拦截器的自动注册,并标有特殊属性。是常见的 AoP + 属性 + DI 容器场景。

我的问题是:当移植到最新版本的 Ninject 和 Ninject Interception Extension - 3.0 时,当我的拦截器应该运行时,我开始遇到异常。在解析属性类型和注册拦截器时,我的 InterceptorRegistrationStrategy 工作正常。但是运行被拦截的方法会导致以下异常:

我不得不求助于 Reflector 并使用 Ninject Interception Extension 源来解决这个问题,再加上没有足够的文档,这让我处于不利的境地。

移植到 Ninject 3.0 时有人遇到同样的异常吗?

这是我用来根据属性自动注册拦截器的代码:

0 投票
1 回答
365 浏览

c# - 代理使用 Ninject.Extensions.Interception.Linfu 暴露多个接口

我正在使用Ninject.Extensions.Interception(更具体地说,InterceptAttribute)和Ninject.Extensions.Interception.Linfu代理在我的 C# 应用程序中实现日志记录机制,但是当代理类实现多个接口时,我遇到了一些问题。

我有一个实现接口并从抽象类继承的类。

当我尝试从 ServiceLocator 获取 MyClass 的实例时,Loggable属性会导致它返回一个代理。

问题是返回的代理只识别AbstractClass接口,暴露SomeMethod()ArgumentException因此,当我尝试访问不存在的SomeProperty时,我会收到一个。

在这种情况下,有没有办法使用 mixin 或其他一些技术来创建一个暴露多个接口的代理?

谢谢

保罗

0 投票
1 回答
1038 浏览

c# - 带有 Ninject 拦截、Castle DynamicProxy 和 WPF 窗口的 AOP:在窗口的 DynamicProxy 中找不到 XAML 资源

在我们的实际应用程序中,我们定义了一个属性,用于启用方法或类的日志记录(通常的 AOP 用例)。当我们将此属性应用于 WPF 窗口类时,Ninject 无法创建此类的对象。这是重现该问题的最小示例:

用于日志记录的虚拟拦截器:

对应的属性:

窗口类(完全为空,里面只有自动生成的空网格):

最后是请求对象的应用程序启动代码:

kernel.Get<MainWindow>();当通过an请求窗口时,TargetInvocationException会抛出一个内部异常,告诉我Castle.Proxies.MainWindowProxy没有由 URI 指定的资源,我们的程序集的短名称"/NinjectInterceptionWPF;component/mainwindow.xaml"在哪里。NinjectInterceptionWPF

当我们查看自动创建InitializeComponent的时,MainWindow我们可以看到创建了一个 URI 来处理 XAML 代码,而代理似乎缺少该 URI:

我已经玩了一点,并尝试使用绝对 URI,但LoadComponent只接受相对 URI。

一些互联网搜索表明,很多人使用 Ninject Interception 和 DynmaicProxy 进行 WPF 绑定(INotifyPropertyChanged),所以我认为总的来说应该可以构建 WPF 窗口的代理。

但是怎么做?

0 投票
1 回答
1367 浏览

c# - 用 Ninject 拦截。无法加载 IProxyRequestFactory

我正在学习使用 Ninject 和 Interceptor 模式。

我有以下拦截器。

并且有一个名为的类MyClass,它除了 2 个简单的方法之外什么都没有,它们是虚拟的,以允许拦截器对其进行处理。(两种方法是 Echo 和 double,正如他们的名字所说的那样。)

我通过 NuGet 将 Ninject、Ninject.Extensions.Interception 和 Ninject.Extensions.Interception.DynamicProxy 添加到我的项目中。

添加了以下using语句。

我的主要方法,它进行引导看起来像这样。

我在指定的行收到以下错误。

谁能告诉我我做错了什么?

0 投票
1 回答
1190 浏览

c# - 调试拦截器模式

我正在学习将拦截器模式与 Ninject 一起使用。

我有一个拦截器如下。

我正在我的 Main Method 中设置我的 Ninject 内核,如下所示。

问题是,在调试对 的方法调用时myClass,(我在语句上放置一个断点myClass.methodName()并按 F11)在我看到对我的拦截器的调用之前,有很多堆栈帧要传递,然后是实际的方法调用。

我确实意识到 Ninject 创建了 Dynamic Proxies .etc。在幕后,但这使事情变得更加困难,如果我想查看我的代码流程,从所有拦截器到实际方法。(想象一下调试以查看哪个拦截器阻塞了方法调用)

有没有办法告诉 Visual Studio 不要中断 Ninject 堆栈帧?(反正我没有 Ninject 源)

更新 本质上,我想做的是告诉VS不要破坏我没有源代码的代码......

0 投票
1 回答
295 浏览

ninject - ninject 可以拦截私有方法吗?

我想知道 ninject 是否有可能拦截我班级的私有方法。我试图做一些 aop 编程来动态注入日志机制。

0 投票
1 回答
1220 浏览

c# - 使用参数的 Ninject 方法级拦截

我在拦截教程中注意到您可以定位一个方法并拦截它。IE

文档/教程不包括在您尝试拦截的方法具有参数的情况下要做什么,即ThrowsAnError是否接受字符串作为参数。

在绑定时,我无法访问参数,所以我想知道我是否以错误的方式进行此操作?

编辑

工作示例

0 投票
1 回答
744 浏览

ninject - Ninject拦截:服务调用被拦截的方法在自身内部调用时未被拦截

我有一个注入了 Ninject 3.0 的服务类。我已经设置了它,所以它的代理是类代理而不是接口代理。该服务有 2 种方法,第一种方法返回广泛的结果,第二种方法调用第一种方法并对其进行过滤。我添加了一个拦截器来缓存第一种方法的结果。

当我从服务外部调用第一个方法时,拦截工作正常。

问题是当拦截器调用第二个方法时,它是通过服务本身而不是通过代理调用它,导致我从我的服务调用第一个方法没有被拦截,因此没有被缓存。

我怎样才能让它工作?

更新:添加了示例代码

如果有任何东西似乎没有编译,这在我的头上很抱歉

这是服务类的示例

CacheMethodOutputAttribute 是一个简单的属性类

这是一个示例绑定(这是我确保使用类代理而不是接口代理但实际上通过接口保留注入引用的方式)

因此,当我从注入 IService 的任何类调用 GetObjects 时,会触发拦截器,但不会从 Service 本身的 GetObject 方法触发。

CacheAttributeInterceptor 看起来像这样(但实现细节无关紧要):