2012-08-13 5 views
0

나는 FTPDataTransfer -class가 있으며 상태는 (FTPDataTransferState)입니다. 이 클래스는 ReceiveData (오버로드), SendData, ... 과 같은 많은 전송 메소드를 제공합니다. 모든 전송 메소드에서 값을 변경하지 않고 상태를 Ready, Transfer, ...으로 변경하려면 어떻게해야합니까?C에서 가로 세로 방향 #

+0

'FTPDataTransferState'의 값은 위에서 언급 한 방법에서 수행 한 논리에 의존하지 않습니다 ...? –

+0

네,하지만 그것은 중복적이고 불편합니다 ... 저는'state = FTPDataTransferState.Transfer'라고 쓰고 모든 메소드에서'state = FTPDataTransferState.Ready'의 끝에서 ... –

답변

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); 
    } 
} 
1

.NET 용 대표적인 AOP 툴킷은 PostSharp입니다. 귀하의 경우에서 작동하는 방식은 메소드가 실행될 때 설정되어야하는 상태를 지정하는 사용자 정의 속성을 정의하고, 해당 메소드에 속성을 적용하고, 한 곳에서 코드 설정/상태를 다시 설정합니다. 툴킷은 메소드가 입력/출력 될 때이 코드를 실행합니다.

관련 문제