) в каждом месте кода, и это может быть яснее, чтобы увидеть.
ли Я хотел бы, чтобы мое определение политики и выполнение этой политики были в двух разных утверждениях, как в:Я хочу сделать это таким образом, чтобы лучше использовать политики повторных попыток, например, для использования в внедрении зависимостей.
// Policy definition
var policy = Policy
.HandleResult<IRestResponse>(predicate)
.Retry(2);
// Policy execution
policy.ExecuteAndCapture(() =>
{
DoSomethingAndReturnAnIRestResponse();
};
Я пытаюсь понять, есть ли какие-либо соображения при разделении политики и выполнения таким образом, например, если есть какое-либо «состояние» (из-за отсутствия лучшего термина), которое может не переноситься в
объект от определения политики до исполнения.policy
Вдоль этих линий я замечаю, что когда я использую Полли
вышеупомянутым способом, что определенные свойства (те, которые связаны с фиксацией окончательного исключения / результата, связаны сExecuteAndCapture()
) не отображаются наExecuteAndCapture()
объект. По документации (policy
Вот а такжеВот), после завершения политики, такой как ниже:... ты должен вернуться
var policy = Policy
.HandleResult<IRestResponse>(predicate)
.Retry(2)
.ExecuteAndCapture(() =>
{
DoSomethingAndReturnAnIRestResponse();
});
Это действительно происходит тогда
PolicyResult.Outcome
PolicyResult.FinalException
PolicyResult.ExceptionType
PolicyResult.Result
находится в том же утверждении, что и определение политики. Однако при отделении определения политики от выполнения эти свойства недоступны. Я наивно предполагал, что они появятся на существующихExecuteAndCapture()
объект, но они этого не делают:policy
Кажется, мне нужно создать новое назначение переменной для доступа к этим свойствам:
Какие-нибудь проблемы здесь?
Не беспокойся. Конфигурирование политик отдельно от их использования и внедрение их на сайты использования - это распространенный шаблон, который мы широко используем в производстве.