Командлет C # финализация - PullRequest
0 голосов
/ 21 ноября 2018

Итак, я работаю с командлетами в C # и использую базовый командлет, производный от PSCmdlet.

Примерно так: Child <- Parent <- PSCmdlet. </p>

Мы входим в системуиспользуя методы в родительском командлете.Но иногда вещи не всегда идут хорошо с исключениями, сбоями и так далее.Так что это не совсем правильно выйти из системы.

Мой вопрос заключается в следующем: существует ли метод, который я могу реализовать / переопределить в командлете Parent, который будет запускаться независимо от того, что происходит, чтобы мы могли правильно выйти из системы?Вроде как попробовать наконец.Я проверил EndProcessing () и StopProcessing (), но на самом деле они не справляются с задачей в непредвиденных ситуациях.

Редактировать: Чтобы уточнить, существует несколько командлетов, и ситуация не только для входа в систему.Есть несколько исключений, которые могут возникнуть на основе кода и ввода пользователя.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Решением моей проблемы, как предложил @PetSerAl, было внедрение IDisposable в классе Parent.Используя Dispose (), я мог бы добавить любые методы, необходимые для завершения командлета, независимо от того, что происходит.

0 голосов
/ 21 ноября 2018

Это звучит как хороший пример использования Try-catch:

try
{
    UserLogin();
    OtherMethod();
}
catch(UnauthorizedException au)
{
    Console.WriteLine("Unauthorized user... shutting down");
    //Closing Code...
    Environment.Exit(0);
}
catch(OtherException oe)
{
    //Closing Code...
    Environment.Exit(0);
}
...

Где бы вы (если не уже) выбросили исключение UnauthorizedException() в UserLogin() или какой метод вы используете дляпроверка учетных данных.

Эта концепция также может быть применена к другим областям кода, которые ожидают исключений.Если исключения вызваны тем, что код не работает должным образом, Try-Catch не следует использовать для подавления этой ошибки, поскольку она должна быть исправлена.Исключения / ошибки, основанные на пользовательском вводе, могут быть заключены в Try-Catch.

...