问题标签 [linfu-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 投票
3 回答
9390 浏览

.net - LinFu.DynamicProxy 和 Castle.DynamicProxy 有什么区别?

我正在考虑将逻辑添加到我正在处理的库中,这需要动态代理。我想从在生产环境中使用这两个库的用户那里得到一些建议。一个能胜过另一个,是否有任何缺点让你不得不切换到另一个,等等。基本上告诉我你在图书馆的经历。答案将帮助我决定使用哪一个。

- 编辑 -


我忘了提到我正在开发的库将支持 Mono,因此您可以分享关于这两个库的任何知识以及它们对 Mono 的支持也会很棒。

0 投票
1 回答
776 浏览

nhibernate - 升级到版本 2.1.2 后 Nhibernate 不起作用

我最近将我的 NHibernate 实现从版本 2.1.0 更改为 2.1.2。对于延迟加载,我使用了 LinFu 实现:NHibernate.ByteCode.Linfu。

由于我更改为最新版本,因此出现以下错误:

调试时出现以下错误:

这是因为使用了 NHibernate.ByteCode.LinFu 吗?我该怎么做才能使应用程序再次运行?

0 投票
0 回答
200 浏览

linfu-dynamicproxy - 林福拦截器

如何使用 LinFu 实现自动 InotifypropertyChanged?

0 投票
2 回答
502 浏览

c# - 如何拦截、解析和编译?

这是我一段时间以来一直在努力解决的问题。我需要一种方法,要么在编译时用模板中的解析代码替换方法中的代码(想到 PostSharp),要么创建动态代理(Linfu 或 Castle)。所以给出这样的源代码

我需要把它编译成这个

使用什么技术并不重要。我尝试使用 PostSharp 的 ImplementMethodAspect,但一无所获(由于缺乏经验)。我还研究了 Linfu 框架。有人可以建议一些其他方法或方法来做到这一点,我真的很感激。我的整个项目都依赖于此。

假设:

  1. 代码可以出现在任何类中。
  2. 模板代码将始终使用属性 [Template] 进行注释
  3. 模板方法将始终返回字符串。

将代码从一种形式解析到另一种形式已经完成。现在我只需要一种方法来替换它。

“牛肉”示例:

0 投票
1 回答
679 浏览

nhibernate - 在哪里可以找到 NH3.2 的 LinFu 字节码提供程序?

它不包含在 NHibernate 的 3.2 版本中,我无法在任何地方找到它。
在哪里可以找到?

0 投票
0 回答
256 浏览

nhibernate - 在 NHibernate 中使用 LinFu ProxyFactoryFactory 时,集合的支持字段为空

当我尝试在 NHibernate 中从 Castle ProxyFactoryFactory 切换到 LinFu ProxyFactoryFactory 时遇到问题。

我有一个这样的实体:

这是用 Fluent NHibernate 映射的,如下所示:

这种关系是双向的,并且在 Bar 端也是如此映射的。

当我调用 AddBar 方法时会出现问题。_bars 集合为 null,并引发 NullReferenceException。

如果我切换回 Castle ProxyFactoryFactory,问题就会消失。

所有映射的集合都不会发生该错误,仅此一个实例。

即使我将 _bars 更改为只读,问题仍然存在!因此,即使在分配了该字段之后,也有人设法将只读字段设置回 null。

有任何想法吗?

0 投票
2 回答
10954 浏览

nhibernate - NHibernate.ByteCode.LinFu.dll 用于 NHibernate 3.2

我在哪里可以找到针对 NHibernate 3.2 编译的最新版本的 NHibernate.ByteCode.LinFu.dll?

0 投票
1 回答
1479 浏览

c# - Ninject Interception 动态代理问题

我正在尝试设置拦截以与我们一直用作依赖注入框架的 Ninject 一起工作。

我已经从 NuGet 下载了拦截扩展,并尝试使用 Castle Dynamicproxy 实现和 LinFu 实现,但都无法与我们的应用程序一起使用。

Castle 在没有无参数构造函数的类上创建代理时出错,因为所有服务对象的依赖项都通过构造函数注入,这是一个问题。错误是:

System.ArgumentException:无法实例化类的代理:emedia.RapidSystems.Subscriber.Presenters.RRSubmissionPresenter。找不到无参数构造函数。参数名称:constructorArguments

LinFu 拦截器工作得更好,直到代码调用了一个带有泛型参数的方法,然后它给了我以下内容:

System.ArgumentException:泛型类型无效。参数名称:methodInfo

这是我试图拦截的一个类的简化版本代码:

Add 和 GetAll 工作正常,但在代理上调用 GetEntity 时会发生错误。

在这一点上,我被困住了,因为这两个拦截器都不能与代码库一起工作。有没有人使用真正复杂的生产系统而不是简单的演示类进行 Ninject 拦截,如果是这样,怎么办?我不介意我使用哪个拦截器,只要它有效。

还是使用 Ninject 进行拦截还不够成熟,我是否需要考虑用 Unity 之类的其他东西替换整个东西?

0 投票
1 回答
477 浏览

c# - 返回 IEnumerable 的 Linfu 动态代理和接口方法

I am using Linfu to generate a proxy object for an interface. Everything works fine except when calling a method that returns an IEnumerable<object> I get an error something lik

I am using Linfu to generate a proxy object for an interface. Everything works fine except when calling a method that returns an IEnumerable<object> I get an error something like this:

Unable to cast object of type '< IEnumerableRpcCall >d__2' to type 'System.Collections.Generic.IEnumerable`1[System.String]'.

FYI: IEnumerableRpcCall is the name of the method inside the interceptor code that does yield return object rather than return object.

It seems the problem is that linfu is returning a pointer to the method rather than an IEnumerable. Has anyone found a workaround for this?


The problem seems to be related to casting up from IEnumerable< object > to IEnumerable< string > (or whatever type). I solved it by wrapping my enumerator logic inside a custom class that implements IEnumerable<T>:

and then in my interceptor code I use reflection to instantiate the correct generic type as specified in the InvocationInfo object:

And now the proxy object for my interface no longer throws an invalid cast exception when I make method calls that return IEnumerable<>

(more on writing LinFu Dynamic Proxy interceptors here)

0 投票
1 回答
358 浏览

c# - 在商业应用中使用 Automapper 和 LinFu.DynamicProxy

我们想在商业应用程序(.NET 3.5)中使用 Automapper。为了获得许可,我们需要 automapper 的源代码。

我们获得了所需的 automapper 源代码,但在构建代码后我们发现 automapper.dll 的大小为 86KB,而我们使用的 DLL 为 108 KB。应用程序无法使用这个 86KB 的 automapper dll

我们查看了代码,发现另一个 DLL LinFu.DynamicProxy 大小为 21KB。如果我将此 DLL 与 automapper DLL 应用程序一起使用,则可以正常工作。

基于此,我得出结论,我使用的 108KB dll 实际上包含 86KB Automapper + 21 KB LinFu.DynamicProxy。

现在我有与许可有关的问题。我是否也需要获得 LinFu.DynamicProxy 的批准。它带有 GNU 许可证。