【问题标题】:Is there a good reason to initialize a property in the SetParameters method rather than directly?是否有充分的理由在 SetParameters 方法中而不是直接初始化属性?
【发布时间】:2019-04-11 11:06:47
【问题描述】:

在下面的代码 sn-p 中,取自 Blazor 示例,StartDate 属性在派生的 SetParameters 方法中初始化,而它可以这样初始化:

[Parameter] DateTime StartDate { get; set; } = DateTime.Now;  

我想知道这是否只是风格偏好的问题,还是有充分的理由这样做......

  @functions {
    [Parameter] DateTime StartDate { get; set; }

    WeatherForecast[] forecasts;

    public override void SetParameters(ParameterCollection parameters)
    {
        StartDate = DateTime.Now;
        base.SetParameters(parameters);
    }

}

【问题讨论】:

    标签: blazor


    【解决方案1】:

    来自 blazor documentation

    SetParameters 可以在设置参数之前被覆盖以执行代码。

    如果未调用 base.SetParameters,自定义代码可以以任何需要的方式解释传入的参数值。例如,传入的参数不需要分配给类的属性。

    所以SetParameters 允许你偷偷修改东西..

    我猜您正在将该值设置为默认值。为此,我想说第一种方法非常好,而第二种方法矫枉过正且令人困惑。

    【讨论】:

    • 上面调用 SetParameters 取自 Blazor 示例,可能是由 danroth 或 SteveSandersonMS 创建的……我想知道他们为什么这样做,就像在之前的示例中一样,他们已经初始化了属性本身.但是,您认为这与示例代码调用 OnParametersSetAsync 而不是 OnInitAsync 的事实有关吗?感谢您的回复...
    猜你喜欢
    • 2022-08-14
    • 2011-09-15
    • 2013-06-04
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多