我創建了一個簡單的方面:適用於其他裝配類方法的方面都需要
[Serializable()]
public class NullableCallAspect : PostSharp.Aspects.OnMethodBoundaryAspect
{
public override void OnEntry(PostSharp.Aspects.MethodExecutionArgs args)
{
if (args.Instance == null)
args.FlowBehavior = PostSharp.Aspects.FlowBehavior.Return;
}
}
從本質上講,我想無論哪instance.method
呼叫instance == null
它不輸入方法。我搞清楚了,我需要改變方面的繼承。所以,我需要換一個OnMethodBoundaryAspect
。這將是第一個問題。
另一個問題是如何將這個方面應用到繼承另一個程序集接口的類的方法調用。
我已經試過這一點,但它不是做得比較工作:
[assembly: UI.Aspects.NullableCallAspect(
AttributeTargetAssemblies = "UIAppearanceExtensibility",
AttributeTargetTypes = "UI.Appearance.Extensibility.*.I*AppearanceManager",
AttributeTargetMembers = "handle*"
)]
是的,每個接口都在** ClassLibrary1 **上定義,每個對其方法的調用都是由** MyApplication1 **完成的。正如你可以看到[這裏](http://s16.photobucket.com/user/jeusdi/media/snip3.png.html),** MyApplication1 **是'UI'和** ClassLibrary1 **是'UIExtensibility' 。但它不起作用。我不知道如何解決這個問題。 – Jordi
使ClassLibrary1中的所有接口都無法使黑客工作是不夠的。所有的接口實現都需要在ClassLibrary1中定義。 –
好的。我想避免檢查'null.method'調用。我爲我的類型創建了一個虛擬實現,其中IoC不提供任何實現。虛擬實現由NSubstitute代理提供。感謝所有。 – Jordi