构造函数执行前的属性初始化

时间:2017-01-27 14:40:17

标签: c# constructor object-initializers

我正在使用对象初始值设定项来创建一个具有Position属性的对象,如下所示:

var control = new HtmlTextbox(browser)
{
    Position = position;
};

据我所知,它与:

相同
var control = new HtmlTextbox(browser);
control.Position = position;

但我想在构造函数方法中使用初始化Position属性。 有没有办法在不提供Position作为构造函数的参数的情况下做到这一点?

2 个答案:

答案 0 :(得分:2)

您无法实现的目标。

在我看来,你想让构造函数的一些参数可选。您可能想要研究这种模式:

//Your constructor
public HtmlTextbox(TextboxConfiguration config)
{
    //config.Position
}

//A Transfer class
public class TextboxConfiguration
{
    public T Browser { get; set; }
    public T Position { get; set; }
}

//Your code
var config = new TextboxConfiguration
{
    Browser = browser;
    Position = position;
}
var textbox = new HtmlTextbox(config);

答案 1 :(得分:0)

另一种方法是使用继承并从那里初始化值,因为最派生类的构造函数最后被调用,但它的值首先被初始化。