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
}
]
} Государства должны наследовать от
и реализовать Execute или ExecuteAsync , метод с контекстом вашего состояния. Вы можете использовать любую структуру впрыска зависимостей для инъекций строительства. Это ничего не сломает.
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 следующим образом
serviceCollection . AddJasonState < TestStateContext > ( ) ;или
serviceCollection . AddAsyncJasonState < TestStateContext > ( ) ; TestClient можно найти
AsynctestClient можно найти 
Лицензировано в соответствии с MIT, см. Лицензию на полный текст.