我有一个FTPDataTransfer
具有状态(FTPDataTransferState
)的类。此类提供了许多传输方法,例如ReceiveData
(重载)SendData
,...我如何将状态更改为Ready
,,Transfer
...而不改变每个传输方法中的值?
问问题
127 次
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 回答