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
}
]
}國家必須繼承
並通過您的狀態上下文實現執行或執行方法。您可以使用任何依賴注入框架進行施工注射。它不會破壞任何東西。
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,註冊必要的依賴項,以供服務。
serviceCollection . AddJasonState < TestStateContext > ( ) ;或者
serviceCollection . AddAsyncJasonState < TestStateContext > ( ) ; 可以找到測試成分
可以找到異步線
根據MIT許可,請參閱全文許可。