问题标签 [dynamic-proxy]

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

c# - 为什么 *each* 虚拟方法调用不会调用 DynamicProxy 的拦截器?

一个例子最好地解释它:

我本来期望输出:

相反,我得到:

为什么?

动态代理是如何工作的?我期待生成的代理从代理类继承,但是,它似乎使用组合将代理接口中的每个方法委托给实际实现。

我已经尝试过 Castle DynamicProxy 以及Cramon的旧动态代理实现

0 投票
1 回答
1086 浏览

c# - 使用参数代理方法时Castle DynamicProxy v1异常?

我在使用 Castle DynamicProxy v1.1.5.0 代理带有参数的方法时遇到问题。- 我得到异常“索引超出了数组的范围。”

如果我只使用没有参数的方法,或者 DynamicProxy v2,一切正常。
不幸的是,我无法说服我的项目的负责人向 v2 添加依赖项(我们已经在使用 NHibernate 附带的 v1)。

所以我的问题归结为:这可以在 v1 中完成吗?我用错了吗?

这是细节。

我已经实现了一种模拟继承的机制,而无需编译时对基类的依赖。请不要问为什么,原因很丑:(

这是一个完整的示例,展示了它是如何中断的。我引用的是 Castle.DynamicProxy.dll (v1)。如果我更改对 Castle.DynamicProxy[b]2[/b].dll (+ Castle.Core.dll) 的引用,请取消注释代码开头的#define。

抱歉代码太长了,但我担心我可能会泄露一些重要的细节......
另外:免责声明:代码示例有一些讨厌的错误!(可能比我发现的还要多:)

哇!那是一口。这是使用 v1 时发生的异常:

使用 v2 运行时,我得到的只是正确的输出:

派生 - Foo!衍生 - 巴兹!

...帮助?

0 投票
5 回答
34723 浏览

java - spring框架中使用代理(动态代理)是什么意思?

不知道spring使用proxy是什么意思。什么是有效的?

0 投票
2 回答
1558 浏览

java - 使用 Spring AOP 时是否所有方法都被代理?

当使用 Spring AOP 为使用NameMatchMethodPointcutAdvisorBeanNameAutoProxyCreator的类创建代理时,这实际上代理了对对象的每个调用,但仅将建议应用于匹配的方法,或者以某种方式创建一个仅具有这些方法并使用正常的代理对象应该被拦截的呼叫的对象?

方式,我想我理解它会代理对对象的每次调用,然后只在匹配的方法上调用顾问 - 但我找不到一个好的示例/帖子来确认这一点。

0 投票
1 回答
2878 浏览

castle-windsor - Windsor Container 中的 Castle 动态代理

我有一点问题。我在 Castle Windsor IOC Container 工作。现在我想做的只是弄乱一些 AOP 原则,而我特别想做的是基于方法名称执行一些日志记录。我一直在研究拦截器,目前我正在使用作为类实现的 IInterceptor 接口来使用方面执行此日志记录。问题是,如果我想在特定方法上执行日志记录,那么它会变得一团糟,因为我需要将一些逻辑放入我实现的方面以检查方法名称等......

我读过你可以使用动态代理和 IInterceptorSelector 接口和 IProxyGenerationHook 接口来完成所有这些工作。我在网上看到了一些这样的例子,但我很困惑这一切如何适合温莎容器。我的意思是我正在使用 windsor 容器,它在我的代码中实际上是对 IWindsorContainer 接口的引用来创建我的所有对象。我所有的配置都是用代码而不是 XML 完成的。

首先,除了我目前正在执行的方式之外,是否有人知道在 Windsor 容器中执行特定于方法的 AOP 的方法。

其次,我如何在 Windsor 容器中使用动态代理?

下面我添加了创建代理并使用拦截器注册我的类的代码

测试类如下:

至于拦截器,它们非常简单,如果名称以 Check 开头,只需输入一个方法。

现在,当我从容器中解析我的 TestClass 时,我得到了一个错误。

{“这是一个 DynamicProxy2 错误:混合类型 TestClassProxy 实现了 IProxyTargetAccessor,它是一个 DynamicProxy 基础结构接口,您永远不应该自己实现它。您是否尝试混合现有代理?”}

我知道我以错误的方式使用代理,但由于我没有看到任何关于如何将代理与温莎容器一起使用的具体示例,这有点令人困惑。

我的意思是,如果我想使用 LoggingProxyGenerationHook,它只是告诉拦截器首先使用以“check”开头的方法,那么这是正确的方法还是我完全走错了路。我刚刚采用代理方式,因为它看起来非常强大,我想了解如何使用这些代理进行未来的编程工作。

0 投票
2 回答
1666 浏览

java - 使用动态代理集中 JPA 代码

实际上,这不是一个问题,但我真的需要你的意见......我把他的帖子放在这里是因为我知道你总是很活跃,所以请不要认为这是一个坏问题并分享你的意见。

我使用 Java 动态代理来集中我在独立模式下使用的 JPA 代码,这是动态代理代码:

这是包含更多信息的链接(http://m-hewedy.blogspot.com/2010/04/using-dynamic-proxies-to-centralize-jpa.html

所以,请给我你的意见。

谢谢。

0 投票
2 回答
7353 浏览

java - 在 Java 中,cast 的实例和类型(即(ClassName))如何作用于代理对象?

Java 为给定接口生成代理类并提供代理类的实例。但是当我们将代理对象类型转换为我们的特定对象时,java如何在内部处理这个?这是否被视为特殊情况?

例如,我有一个类OriginalClass并且它实现了OriginalInterface,当我通过传递OriginalInterface接口创建代理对象时,JavaProxyClass使用提供的接口中的方法创建了代理类并提供了这个类的对象(即ProxyClass)。如果我的理解是正确的,请您回答以下问题

  1. ProxyClass当我在我的类中输入 cast object of时,OriginalClass这是可行的,但是 Java 是如何允许这样做的呢?在实例的情况下是否相同?
  2. 据我所知,Java 仅使用方法创建代理类,但是当我尝试访问该对象的属性时会发生什么?
  3. 只有接口方法在代理中实现,但是当我尝试访问不在接口中且仅在类中提到的方法时会发生什么?

谢谢,学生

0 投票
1 回答
372 浏览

java - Java 中的动态、反射 SignalHandler

如果可用,我如何安装信号处理逻辑sun.misc.Signal

背景 我的第一代代码假定信号处理可用,看起来像这样:

我相信我了解如何反射性地测试和使用信号处理程序——Class.forName("sun.misc.Signal")反射式调用Signal.handle等等。

我的冲动只是用动态获得的类实例化另一个匿名内部类SignalHandler,但我认为这只是一厢情愿的语法。

0 投票
2 回答
165 浏览

c# - 我可以让编译器和 CLR 忽略我的类型上未实现的接口吗?

我想定义一个实现某个接口的类型,但是我只会在运行时在代理中实现它。在这种情况下,我可以看到两个障碍:

1-使编译器忽略未实现的接口。2-使用以下描述使 CLR 忽略(或至少延迟)TypeLoadException:“来自程序集 SOMEASSEMBLY 的 SOMETYPE 类型中的方法 SOMEMETHOD 没有实现。”

这样的事情可能吗?

0 投票
1 回答
3049 浏览

castle-windsor - 使用 Castle Windsor IInterceptor 拦截属性

有人对使用 Castle DynamicProxy 拦截属性的更好方法有建议吗?

具体来说,我需要我正在拦截的 PropertyInfo,但它不是直接在 IInvocation 上,所以我要做的是:

然后在我的 IInterceptor 中:

}