C# 中的方面方向

  • 本文关键字:方向 方面 c# aspect
  • 更新时间 :
  • 英文 :


我有一个FTPDataTransfer类,它有一个状态(FTPDataTransferState)。此类提供了许多传输方法,如ReceiveData(重载)、SendData、...如何将状态更改为ReadyTransfer、...不追逐每种转移方法的值?

你可以使用PostSharp来实现这一点。更详细地说,OnMethodBoundaryAspect是您想要使用的方面。在您的情况下,它可能看起来像:

using PostSharp.Aspects;
[Serializable]
public sealed class ReadyOnExit : OnMethodBoundaryAspect
{
    public override void OnExit(MethodExecutionArgs args)
    {
        var state = (FTPDataTransferState)args.Instance;
        state.Transfer(FTPDataTransferState.Ready);
    }
}

.NET 的领先 AOP 工具包是 PostSharp。在您的情况下,它的工作方式是定义一个自定义属性,指定执行方法时应设置的状态,将该属性应用于适当的方法,并定义(在一个位置)代码设置/重置状态。该工具包将使此代码在输入/离开方法时运行。

最新更新