我创建了一个简单的方面:适用于其他装配类方法的方面都需要
[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