Jason State adalah implementasi mesin negara bagian yang sederhana. Ini dikonfigurasi oleh file JSON.
| Kemasan | |
|---|---|
| Jasonstate | |
| Jasonstate.Extension |
Perintah berikut dapat digunakan untuk menginstal Jasonstate dan Jasonstate.Extension, jalankan perintah berikut di konsol Paket Manajer
dotnet add package JasonState
dotnet add package JasonState.Extension
Atau gunakan dotnet cli
dotnet add package JasonState
dotnet add package JasonState.Extension
Pertama, Anda perlu memberikan file JSON yang valid. File JSON ini harus berisi array negara . Array ini harus dimiliki
objek.
array berisi
objek Contoh file JSON yang valid dapat ditemukan melalui 
{
"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
}
]
} Negara harus mewarisi dari
dan mengimplementasikan metode Execute , atau ExecuteAsync , dengan konteks negara Anda. Anda dapat menggunakan kerangka kerja injeksi ketergantungan apa pun untuk suntikan konstruksi. Itu tidak akan merusak apapun.
public class InitialState : BaseState < TestStateContext >
{
public override void Execute ( TestStateContext context )
{
// do the magic
}
}Jason State memungkinkan Anda untuk menambahkan objek apa pun ke konteks. Segala sesuatu yang Anda butuhkan selama eksekusi negara harus dalam konteks.
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" ;
}
}Dengan merujuk jasonstate.extension, daftar dependensi yang diperlukan untuk serviceCollection sebagai berikut
serviceCollection . AddJasonState < TestStateContext > ( ) ;atau
serviceCollection . AddAsyncJasonState < TestStateContext > ( ) ; TestClient dapat ditemukan
Asynctestclient dapat ditemukan 
Lisensi di bawah MIT, lihat lisensi untuk teks lengkap.