在对象构造中调用self

时间:2014-10-21 12:19:34

标签: c#

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

考虑以下初始化代码块:

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

我想将_saveButton传递给一个方法,该方法会使用TextColor之类的内容更改其BorderColorvoid applyStandard(View v)属性。

如果可能,我怎么能这样做?

3 个答案:

答案 0 :(得分:3)

您无法访问初始值设定项中的按钮实例,但您可以制作一个在其后面调用的扩展方法:

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();

答案 1 :(得分:0)

您无法在对象初始值设定项中执行此操作。您需要将方法调用与初始化分开。

答案 2 :(得分:0)

你所拥有的几乎就在那里,我认为你是从错误的方向接近问题。如前所述,您不能使用对象初始化语法来执行您提出的建议。解决问题的最简单方法(不仅仅是创建自己的按钮类型)就是拥有一个创建按钮的方法,并设置所有常用属性。然后,您可以基于每个实例设置任何其他内容:

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

    return button;
}