0

我有一个FTPDataTransfer具有状态(FTPDataTransferState)的类。此类提供了许多传输方法,例如ReceiveData(重载)SendData,...我如何将状态更改为Ready,,Transfer...而不改变每个传输方法中的值?

4

2 回答 2

1

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

于 2012-08-13T10:31:41.360 回答
1

您可以为此使用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);
    }
}
于 2012-08-13T10:48:22.257 回答