在对象构造中调用self

本文关键字:调用 self 对象 | 更新日期: 2023-09-27 18:27:15

我正在初始化一个具有多个属性的对象。但是,有多个特性始终相同(样式)。

考虑以下初始化代码块:

private static Button _saveButton = new Button
{
    Text = "Save",
    HorizontalOptions = LayoutOptions.Center,
    WidthRequest = 500,
    IsVisible = false
    //applyStandard(this) ?
};

我想将_saveButton传递给一个方法,该方法用类似void applyStandard(View v)的东西更改其TextColorBorderColor属性。

如果可能的话,我该怎么做?

在对象构造中调用self

您不能访问初始化器中的按钮实例,但您可以创建一个扩展方法,然后立即调用:

public static class Extensions {
    public static Button ApplyStandard(this Button button) {
        button.TextColor = Colors.Red;
        return button;
    }
}

通过从扩展方法返回按钮,您可以将其链接到创建中:

private static Button _saveButton = new Button {
  Text = "Save",
  HorizontalOptions = LayoutOptions.Center,
  WidthRequest = 500,
  IsVisible = false
}.ApplyStandard();

不能在对象初始值设定项中执行。您需要将方法调用与初始化分离。

你所拥有的一切都快到了,我认为你从错误的方向解决了这个问题。如前所述,您无法使用对象初始化语法来实现您的建议。解决问题的最简单方法(不需要简单地创建自己的按钮类型)是使用一个方法来创建一个按钮,并设置所有公共属性。然后,您可以在每个实例的基础上设置任何其他实例:

private static Button CreateCustomButton()
{
    Button button = new Button();
    button.ForeColor = Color.Black;
    // set other properties, initial setup etc...
    return button;
}