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许可,请参阅全文许可。