【问题标题】:Initialize in default class constructor or BeginProcessing?在默认类构造函数或 BeginProcessing 中初始化?
【发布时间】:2013-06-06 19:08:44
【问题描述】:

我正在用 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?
    }

}

【问题讨论】:

    标签: c# powershell-cmdlet


    【解决方案1】:

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

    this.s = "Value: " + this.whatever;
    

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

    【讨论】:

    • 太棒了!正是我正在寻找的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2011-01-25
    • 2011-08-09
    相关资源
    最近更新 更多