在默认类构造函数或BeginProcessing中初始化?

时间:2013-06-06 19:08:45

标签: c# cmdlet

我正在用C#编写一个cmdlet。为了让我的cmdlet正常工作,我需要初始化一些东西。

我是通过重写BeginProcessing还是在默认的类构造函数中进行初始化?

剥离示例:

[Cmdlet(VerbsCommon.Set, "MyNoun")]
class MyCmdlet : PSCmdlet
{
    string s;

    [Parameter(Position = 0, Mandatory = true)]
    public string whatever;

    public MyCmdlet() 
    {
        //initialize s here?
    }

    public override void BeginProcessing()
    {
        //or initialize s here?
    }

}

1 个答案:

答案 0 :(得分:3)

这取决于;您的初始化是否需要初始化cmdlet的参数?如果您只是执行分配string.Empty或全能默认值的操作,则可以在构造函数中执行此操作。但是,如果你要做像

这样的事情
this.s = "Value: " + this.whatever;

您需要在BeginProcessing中执行此操作,因为生命周期中的时间,您可以保证将参数绑定到cmdlet的成员。