1
PostSharp中是否存在等價的AspectJ調用切入點?PostSharp中AspectJ調用切入點的等價物
具體:ClassC和ClassB都調用方法foo()在ClassC上。我想只攔截從A到C的呼叫,NOT B到C在AspectJ這可以通過配對與呼叫切入點內這樣來實現:
呼叫(* ClassC.foo())& &內( ClassA)
我如何在PostSharp中實現這一點?
PostSharp中是否存在等價的AspectJ調用切入點?PostSharp中AspectJ調用切入點的等價物
具體:ClassC和ClassB都調用方法foo()在ClassC上。我想只攔截從A到C的呼叫,NOT B到C在AspectJ這可以通過配對與呼叫切入點內這樣來實現:
呼叫(* ClassC.foo())& &內( ClassA)
我如何在PostSharp中實現這一點?
這是不可能的,因爲MethodInterceptionAspect方法本身不適用於呼叫站點,因此切入點將只能過濾方法,而不能呼叫站點。
可能的解決方案是將兩個方面合作 - 一個管理一個線程靜態變量,另一個將執行截取的方法或執行一些額外的工作。但是,這不是一個理想的解決方案。
因此,在PostSharp的呼叫站點絕對沒有辦法編織?我想過使用一個線程安全開關,但是我想在代碼中調用代碼而不是目標,因爲大多數目標方法都在第三方程序集中。 – MHGameWork 2014-10-17 13:40:15
我正在描述的是這個概念。切入點(是的,定義與AspectJ略有不同)提供了應用該方面的元數據聲明。當然,當你將一個方面應用到其他程序集中聲明的方法時,轉換將在call-site級完成,因爲它是唯一的選擇。 – 2014-10-20 08:15:41
那麼,postsharp將應用一個方面到引用的程序集時,將在調用網站應用該方面? – MHGameWork 2014-10-20 08:31:15