用于静态方法的拦截器

时间:2016-10-20 14:20:57

标签: c# postsharp iinterceptor

我们有遗留代码,想知道应用程序调用何时执行'方法

旧版代码结构:

public class CmsJob
{
    public static string Execute()
    {
    }
}

是否可以在执行静态方法之后或之前使用IInterceptor或PostSharp.dll来实现其他操作?

1 个答案:

答案 0 :(得分:1)

可以使用PostSharp拦截静态方法,即使它是在无法修改的外部程序集中声明的。您可以实现自己的OnMethodBoundaryAspect

[PSerializable]
public class MyAspect : OnMethodBoundaryAspect
{
    public override void OnEntry(MethodExecutionArgs args)
    {
        // Code to execute before the target method ...
    }
}

然后在程序集级别的项目中应用此方面并设置这些属性:AttributeTargetAssembliesAttributeTargetTypesAttributeTargetMembers

[assembly:MyAspect(AttributeTargetAssemblies="ThirdPartyAssembly",
                   AttributeTargetTypes="SomeNamespace.CmsJob",
                   AttributeTargetMembers="Execute")]