state machine
1.0.0
Jason State는 간단한 상태 기계 구현입니다. JSON 파일로 구성됩니다.
| 패키지 | |
|---|---|
| Jasonstate | |
| jasonstate.extension |
다음 명령을 사용하여 JasonState 및 JasonState.extension을 설치할 수 있습니다. 패키지 관리자 콘솔에서 다음 명령을 실행하십시오.
dotnet add package JasonState
dotnet add package JasonState.Extension
또는 dotnet cli 사용하십시오
dotnet add package JasonState
dotnet add package JasonState.Extension
먼저 유효한 JSON 파일을 제공해야합니다. 이 JSON 파일에는 상태 배열이 포함되어야합니다. 이 배열에는 있어야합니다
사물.
배열이 포함되어 있습니다
사물 유효한 JSON 파일의 예를 찾을 수 있습니다. 
{
"States" : [
{
"Namespace" : " TestClient.Impls.States " ,
"Name" : " InitialState " ,
"NextState" : [
{
"Condition" : " !string.IsNullOrEmpty(FromEmail) && FromEmail.Equals( " [email protected] " ) " ,
"State" : " ValidatePaymentState "
},
{
"Condition" : " !string.IsNullOrEmpty(FromEmail) && FromEmail.Equals( " [email protected] " ) " ,
"State" : " FinalState "
}
],
"ErrorState" : " ErrorState "
},
{
"Namespace" : " TestClient.Impls.States " ,
"Name" : " ErrorState " ,
"NextState" : [
{
"Condition" : " true " ,
"State" : " FinalState "
}
],
"ErrorState" : null
},
{
"Namespace" : " TestClient.Impls.States " ,
"Name" : " FinalState " ,
"NextState" : null ,
"ErrorState" : null
}
]
} 국가는 상속해야합니다
상태 컨텍스트와 함께 Execute 또는 ExecuteSync 메소드를 구현하십시오. 건설 주입에 종속성 주입 프레임 워크를 사용할 수 있습니다. 아무것도 깨지 않을 것입니다.
public class InitialState : BaseState < TestStateContext >
{
public override void Execute ( TestStateContext context )
{
// do the magic
}
}Jason State를 사용하면 컨텍스트에 모든 종류의 객체를 추가 할 수 있습니다. 상태 실행 중에 필요한 모든 것은 상황에 있어야합니다.
public class TestStateContext
{
public long CreditCardNumber { get ; set ; }
public string CardHolderName { get ; set ; }
public decimal Amount { get ; set ; }
}
public class InitialState : BaseState < TestStateContext >
{
public override void Execute ( TestStateContext context )
{
context . CreditCardNumber = "4545454545454545" ;
}
}JasonState.extension을 참조하여 다음과 같이 ServiceCecection에 필요한 종속성을 등록하십시오.
serviceCollection . AddJasonState < TestStateContext > ( ) ;또는
serviceCollection . AddAsyncJasonState < TestStateContext > ( ) ; 시험 클리어를 찾을 수 있습니다
AsyncTestClient를 찾을 수 있습니다 
MIT에 따라 라이센스가 부여되며 전체 텍스트 라이센스를 참조하십시오.