1

所以我在Nancy 的 Windsor 引导程序中遇到了这个问题。我设法拼凑了一个小型测试项目,我可以在其中重现出了什么问题。您可以在此处找到该项目。

似乎出了问题的是: DynamicProxy 似乎只捕捉到方法的调用,void Handle(Action<string> oncomplete)而不是在另一个线程上string Handle(string input)调用的方法。好像在它被发送到另一个线程之后不再被代理。从头开始:这只是对未代理的同一类上的另一个方法的调用。Engine

这意味着程序的输出只有

Handled Handle with return type System.Void
test

并不是

Handled Handle with return type System.Void
Handled Handle with return type System.String
test

这是动态代理的预期行为吗?另一个线程上的代理不再是代理了?还是代码有问题?

编辑:只是 RTFM 的动态代理,它看起来像Works As Intended。现在如何配置我的 IEngine 实例以使用正确类型的代理?

4

1 回答 1

2

尝试改变:

Component.For<MyEngine>().Forward<IEngine>().Interceptors<ScopeInterceptor>());

进入

Component.For<MyEngine>().Forward<IEngine>().Forward<MyEngine>().Interceptors<ScopeInterceptor>());

我没有时间实际尝试,但这应该会迫使温莎创建一个类代理,这应该可以解决你的问题

亲切的问候,马尔维恩。

- 编辑 -

对于当前链接尝试替换:

Component.For<IEngine>().ImplementedBy<Engine>()

和:

Component.For<IEngine, Engine>().ImplementedBy<Engine>()
于 2013-06-13T07:21:09.440 回答