我们有遗留代码,想知道应用程序调用何时执行'方法
旧版代码结构:
public class CmsJob
{
public static string Execute()
{
}
}
是否可以在执行静态方法之后或之前使用IInterceptor或PostSharp.dll来实现其他操作?
答案 0 :(得分:1)
可以使用PostSharp拦截静态方法,即使它是在无法修改的外部程序集中声明的。您可以实现自己的OnMethodBoundaryAspect。
[PSerializable]
public class MyAspect : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
// Code to execute before the target method ...
}
}
然后在程序集级别的项目中应用此方面并设置这些属性:AttributeTargetAssemblies,AttributeTargetTypes,AttributeTargetMembers。
[assembly:MyAspect(AttributeTargetAssemblies="ThirdPartyAssembly",
AttributeTargetTypes="SomeNamespace.CmsJob",
AttributeTargetMembers="Execute")]