Jason State es una simple implementación de la máquina de estado. Está configurado por un archivo JSON.
| Paquete | |
|---|---|
| Jasonstate | |
| Jasonstate.extension |
Los siguientes comandos se pueden usar para instalar jasonstate y jasonstate.extension, ejecute el siguiente comando en la consola del administrador de paquetes
dotnet add package JasonState
dotnet add package JasonState.Extension
O use dotnet cli
dotnet add package JasonState
dotnet add package JasonState.Extension
Primero debe proporcionar un archivo JSON válido. Este archivo JSON debe contener una matriz de Estados . Esta matriz debería tener
objetos.
la matriz contiene
objetos Se puede encontrar un ejemplo de un archivo JSON válido a través de 
{
"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
}
]
} Los estados deben heredar de
e implementar el método Ejecute o ExecuteAsync con su contexto de estado. Puede usar cualquier marco de inyección de dependencia para inyecciones de construcción. No romperá nada.
public class InitialState : BaseState < TestStateContext >
{
public override void Execute ( TestStateContext context )
{
// do the magic
}
}Jason State le permite agregar cualquier tipo de objeto al contexto. Todo lo que necesita durante la ejecución estatal debe estar en el contexto.
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" ;
}
}Al hacer referencia a JasonState.Extension, registre las dependencias necesarias a ServiceCollection de la siguiente manera
serviceCollection . AddJasonState < TestStateContext > ( ) ;o
serviceCollection . AddAsyncJasonState < TestStateContext > ( ) ; TestClient se puede encontrar
AsynctestClient se puede encontrar 
Licenciado bajo MIT, vea la licencia para el texto completo.