我有一个FTPDataTransfer
- 类,其状态为FTPDataTransferState
。这个类提供了许多转移方法,如ReceiveData
(重载),SendData
,...
如何在不转换每个转移方法的值的情况下将状态更改为Ready
,Transfer
,...?
答案 0 :(得分:1)
领先的.NET AOP工具包是PostSharp。在你的情况下它的工作方式是你定义一个自定义属性,指定在执行方法时应该设置的状态,将属性应用于适当的方法,并定义(在一个地方)代码设置/重置国家。该工具包将在输入/离开方法时运行此代码。
答案 1 :(得分: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);
}
}