Jason State est une simple implémentation de la machine d'état. Il est configuré par un fichier JSON.
| Emballer | |
|---|---|
| Jasonstate | |
| Jasonstate.extension |
Les commandes suivantes peuvent être utilisées pour installer JasonState et JasonState.Extension, exécutez la commande suivante dans la console du gestionnaire de packages
dotnet add package JasonState
dotnet add package JasonState.Extension
Ou utiliser dotnet cli
dotnet add package JasonState
dotnet add package JasonState.Extension
Vous devez d'abord fournir un fichier JSON valide. Ce fichier JSON doit contenir un tableau des états . Ce tableau devrait avoir
objets.
le tableau contient
objets Un exemple de fichier JSON valide peut être trouvé à travers 
{
"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
}
]
} Les États doivent hériter de
et implémenter l'exécution ou exécuter la méthode avec votre contexte d'état. Vous pouvez utiliser n'importe quel cadre d'injection de dépendance pour les injections de construction. Il ne rompra rien.
public class InitialState : BaseState < TestStateContext >
{
public override void Execute ( TestStateContext context )
{
// do the magic
}
}Jason State vous permet d'ajouter tout type d'objet au contexte. Tout ce dont vous avez besoin pendant l'exécution de l'État devrait être dans le contexte.
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" ;
}
}En faisant référence à JasonState.Extension, enregistrez les dépendances nécessaires à la service de service comme suit
serviceCollection . AddJasonState < TestStateContext > ( ) ;ou
serviceCollection . AddAsyncJasonState < TestStateContext > ( ) ; TestClient peut être trouvé
AsyncTestClient peut être trouvé 
Licencié dans le cadre du MIT, voir Licence pour le texte intégral.