我们有遗留代码,想知道应用程序何时调用“执行”方法。
遗留代码结构:
public class CmsJob
{
public static string Execute()
{
}
}
是否可以在执行静态方法之后或之前使用 IInterceptor 或 PostSharp.dll 来实现附加操作?
我们有遗留代码,想知道应用程序何时调用“执行”方法。
遗留代码结构:
public class CmsJob
{
public static string Execute()
{
}
}
是否可以在执行静态方法之后或之前使用 IInterceptor 或 PostSharp.dll 来实现附加操作?
可以使用 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")]