问题标签 [castle-dynamicproxy]

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 投票
1 回答
672 浏览

castle-dynamicproxy - 是否可以使用动态代理拦截构造函数调用?

是否可以使用动态代理拦截构造函数调用?
我在一个只包含构造函数的类上注册了一个代理作为测试,但它没有被拦截。
我猜目前不可能,但也许我需要做一些特别的事情?

0 投票
2 回答
998 浏览

wpf - Castle Windsor 代理、隐式接口和 WPF 绑定

我正在尝试使用 Castle Windsor Dynamic Proxies 实现 WPF ViewModel。这个想法是我想提供一个接口(下面的 IPerson 应该足以作为示例)、一个具体的支持类和一个拦截器(用于提供 INotifyPropertyChanged 的​​自动实现)。拦截器实现在这里:http ://www.hightech.ir/SeeSharp/Best-Implementation-Of-INotifyPropertyChange-Ever

我看到的问题是,当我将模型绑定到 WPF 控件时,控件不会将模型视为实现 INotifyPropertyChanged。我相信(但不确定)这是因为 Windsor 正在显式地实现接口,而 WPF 似乎期望它们是隐式的。

有什么办法可以使这项工作,以便模型的更改被拦截器捕获并提升到模型?

所有版本的库都是最新的:Castle.Core 2.5.1.0 和 Windsor 2.5.1.0

代码如下:

0 投票
2 回答
1470 浏览

c# - 如何使用动态代理拦截 IInvocation?

是否可以使用动态代理和 windsor 拦截 IInvocation(如果这种情况甚至需要 windsor。我正在使用它来配置代理生成)?
我想记录一个拦截已经改变了对被拦截方法的调用。
例如传递的参数被改变或返回值。
请注意,这仅用于调试目的。

0 投票
1 回答
1474 浏览

c# - DynamicProxy2:CreateClassProxyWithTarget + IInterceptor

如果我在另一个问题中错过了这一点,我深表歉意;在决定我有一个独特的问题之前,我找了好久......我想使用 DynamicProxy2 为 WPF 应用程序的模型类提供拦截。这样我就不必在任何地方完全实现 INotifyPropertyChanged。例如,一旦被代理和拦截,下面的类应该完全参与双向数据绑定:

我发现我可以通过调用 CreateClassProxy 方法创建模型类的新实例并拦截对它的调用:

不幸的是,这迫使我允许ProxyGenerator该类创建我的模型实例,而我正在从中间层取回这些实例,即它们已经存在。我需要包装现有对象,所以我我需要调用CreateClassProxyWithTarget

但是,当我这样做时,我的拦截器停止运行。我很确定这不是拦截器的错……这是一个非常简单的对象。这是它的界面:

FluentInterceptor类型实现了这一点。, Before,After等方法过于简单,无法展示;它们都添加到要在方法调用期间使用的操作队列中,然后每个方法都返回this,从而允许方法链接。

下面的代码不起作用,但我不知道为什么:

如果我尝试使用CreateClassProxy,它就像一个魅力。有人看到我做错了吗?

谢谢!

0 投票
1 回答
1635 浏览

c# - 带接口的 Castle Windsor 代理抽象类

我有以下情况:

我想为 IFoo 注册一个服务,由 Foo 实现,但有一个拦截器来处理对未实现抽象成员的调用。所以,我可以这样做:

但是我在尝试激活我的组件时遇到以下异常:

我注意到以下工作成功....

但后来我的拦截器最终在拦截时看到 Foo,而不是 IFoo 作为 TargetType ......这不是我想要的。

关于如何做到这一点的任何建议?

谢谢。

0 投票
2 回答
1534 浏览

c# - 使用 Castle Dynamic Proxy 2 添加额外的接口?

我想为现有类型创建一个动态代理,但添加一个尚未在目标类型上声明的新接口的实现。我不知道如何实现这一目标。有任何想法吗?

0 投票
2 回答
1055 浏览

.net - 无法使用 DynamicProxy 在拦截器中检索 CustomAttributes

我目前正在使用 Castle DynamicProxy 实现拦截器。我需要拦截器在我的服务层方法上获取一些自定义属性,但 invocation.Method.GetCustomAttributes 什么也不返回。有什么我可能做错了吗?

截取方法:

拦截器:

我也试过:

更新:

可能是配置问题。配置代码如下:

拦截器安装程序:

服务安装程序:

我正在使用 Castle 2.5.2/.Net 3.5。

谢谢,

保罗

0 投票
1 回答
2266 浏览

.net - 在 .NET Web 应用程序中使用 Castle DynamicProxy 的性能建议

我从 Castle DynamicProxy 开始,我有这个示例来跟踪对象属性的更改。

问题:

  • 我应该缓存(在静态字段中)我在 AsTrackable() 中使用的 ProxyGenerator() 实例吗?我打算在 ASP.NET Web 应用程序中使用,但我不确定该类是否是线程安全的?创作成本高吗?
  • 如果我保留代码原样,生成的代理类型是否会被不同的 ProxyGenerator 实例重用。我阅读了缓存教程,但不确定“模块范围”是什么意思。
  • 从性能的角度来看,还有其他建议可以改进代码吗?

代码:

}

0 投票
2 回答
548 浏览

nhibernate - 使用 NHibernate 拦截器和 DynamicProxy 混合边表数据

我正在解决一个问题,其中我有许多实体,每个实体都有一个对应的一对多翻译表,它指定实体字段的本地化版本。(所有这些都是我在其上添加地图的遗留模式)。例如:

  • 事件
    • ID
  • 事件翻译
    • 事件ID
    • 语言
    • 标题
    • 其他领域

所以,如果我要用希腊语呈现我的信息,我会加入这两个表并指定 Language = 'Greek' 并拥有所有正确的东西。

我正在尝试做的是构建即时混合,将正确的数据直接合并到单个对象中,并将其作为查询结果返回,例如:

为此,我正在尝试设置一个 NHibernate 拦截器来创建 DynamicProxy mixins。除了它不起作用,我不知道为什么。这是设置,尽我所能简化它。

这是事件:

IEvenEntity列表还有一个 getter 和 setter。还有一个EventTranslation类,它超级简单,并且IEventTranslation以最明显的方式实现。

Event的流畅地图:

单独工作正常——我可以查询事件并导航到他们的翻译。我很确定映射是好的。

我的拦截器形状基于 Krzysztof Koźmic 的一个非常酷的指南,用于做一些稍微相关的事情。首先,我创建了一个将使用动态代理实现的超级接口:

这是我的 NH 拦截器。显然,我正在疯狂地黑客攻击:

其中 DynInterceptor 是一个拦截器,它实际上完成了进入关系包、获取正确的翻译并返回正确的值的工作。细节不太相关,因为它永远不会被调用。

绑定 NH 拦截器后,我看到它正在运行,实际上 NH 将强制转换IEvent正确(即至少正在创建代理)。但由于某种原因,它完全搞砸了实体的保湿:

在我看来它不起作用,因为 NH 正在使用反射来设置属性,但是当然,目标类型是错误的,因为我将 IEvent 换成了 Event。有没有办法解决这个问题?

另外,就基本方法而言,在新罕布什尔州有更好的方法吗?

0 投票
1 回答
325 浏览

c# - 是否可以在没有基类或接口的情况下创建动态代理?

是否可以使用通用库创建动态代理,例如Castle Dynamic Proxy没有任何基类或接口?我确实有兴趣在运行时拥有动态的即时类。