Jason State ist eine einfache Implementierung der staatlichen Maschine. Es ist von einer JSON -Datei konfiguriert.
| Paket | |
|---|---|
| Jasonstate | |
| Jasonstate.extension |
Die folgenden Befehle können verwendet werden, um JasonState und JasonState.extension zu installieren. Führen Sie den folgenden Befehl in der Paketmanagerkonsole aus
dotnet add package JasonState
dotnet add package JasonState.Extension
Oder dotnet cli verwenden
dotnet add package JasonState
dotnet add package JasonState.Extension
Zuerst müssen Sie eine gültige JSON -Datei angeben. Diese JSON -Datei muss ein Status -Array enthalten. Dieses Array sollte haben
Objekte.
Array enthält
Objekte Ein Beispiel für eine gültige JSON -Datei ist durch 
{
"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
}
]
} Staaten müssen von erben von
Implementieren Sie ausführende Methoden oder Ausführungen mit Ihrem Zustandskontext. Sie können jeden Abhängigkeitsinjektionsrahmen für Bauinjektionen verwenden. Es wird nichts brechen.
public class InitialState : BaseState < TestStateContext >
{
public override void Execute ( TestStateContext context )
{
// do the magic
}
}Mit Jason State können Sie dem Kontext jede Art von Objekt hinzufügen. Alles, was Sie während der staatlichen Ausführung brauchen, sollte im Kontext stehen.
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" ;
}
}Registrieren Sie die notwendigen Abhängigkeiten von der Servicehollektion wie folgt, indem Sie auf JasonState.Extesion verweisen.
serviceCollection . AddJasonState < TestStateContext > ( ) ;oder
serviceCollection . AddAsyncJasonState < TestStateContext > ( ) ; TestClient kann gefunden werden
AsynctestClient kann gefunden werden 
Unter MIT lizenziert, siehe Lizenz für den vollständigen Text.