Cmdlet C#完成

时间:2018-11-21 14:18:53

标签: c# cmdlet pscmdlet

所以我正在C#中使用cmdlet,并使用从PSCmdlet派生的基本cmdlet。

例如:孩子<-父母<-PSCmdlet。

我们使用Parent cmdlet中的方法登录到系统。但是有时候,异常,崩溃等并非总能解决问题。因此,它实际上并没有正确注销。

我的问题如下: 是否存在我可以在Parent cmdlet中实现/重写的方法,无论发生什么情况,该方法都将运行,以便我们可以正确注销?有点像最后尝试。 我已经检查了EndProcessing()和StopProcessing(),但是在不可预见的情况下它们并不能完全胜任该任务。

编辑:为澄清起见,有多个cmdlet,这种情况不仅与登录有关。根据代码和用户输入,可能会发生多种异常。

2 个答案:

答案 0 :(得分:1)

我的问题的解决方案,如@PetSerAl所建议的,是在Parent类中实现IDisposable。 然后,无论发生什么情况,我都可以使用Dispose()来添加完成cmdlet所需的任何方法。

答案 1 :(得分:0)

使用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包装。