2

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

遗留代码结构:

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

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

4

1 回答 1

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")]
于 2016-10-23T20:16:59.197 回答