2013-06-12 76 views
1

所以我跑進了this issue與南希的Windsor引導程序。我設法鞭策一個小型測試項目,在那裏我可以重現出現問題的地方。您可以找到項目hereCastle Windsor IInterceptor Configuration(Nancy bug)

什麼似乎出問題是這樣的:DynamicProxy似乎只趕上void Handle(Action<string> oncomplete)方法的調用,而不是string Handle(string input)方法被稱爲 另一個線程 好像 Engine在發送到另一個線程後不再進行代理。 Scratch that:這只是對未經代理的同一類的另一個方法的調用。

這意味着程序的輸出只有

Handled Handle with return type System.Void 
test 

,而不是

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

這是動態代理的預期行爲?在另一個線程上的代理不再是長久的代理嗎?或者代碼有問題嗎?

編輯:只是RTFM'd動態代理,它好像它Works As Intended。現在如何配置我的IEngine實例來使用正確的代理類型?

回答

2

嘗試改變:

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

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

我沒有時間去真正嘗試,但這個應該強制溫莎到創建一個類代理,這應該解決您的問題

親切的問候, Marwijn。

- 編輯 -

當前鏈接嘗試更換:

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

有:

Component.For<IEngine, Engine>().ImplementedBy<Engine>() 
+0

對不起,鏈接到我的項目是不是正確的版本。您查看的修訂版本實際上包含工作代碼,但我並不想像在您所查看的修訂版本中那樣繼承'Engine'。 – Lodewijk

+0

當前鏈接是否正確? – Marwijn

+0

Jep,只是編輯它。事情是,如果我要引擎子類,那麼我不再需要DynamicProxy。所以我想盡量避免這種情況 – Lodewijk