Lee*_*ite 9 c# conditional constructor
假设我Foo在C#中有以下构造函数:
public Foo()
{
// ...
}
protected Foo(bool connect)
: this()
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种只this()在connect参数出现时才执行该部件的方法true.这是一种方法吗?
(对于好奇的人:这背后的原因是Foo类创建了连接到某些东西的对象;当它们被创建时,它们应该总是尝试连接.现在,我正在为它创建一个模拟器(或MOCK)扩展Foo类这就是我加入了.protected构造函数;当使用这一块,应该是不会建立实际的连接选项,我想实现这个同时改变Foo类尽可能少).
不,你不能this()以这种方式有条件地打电话.但是,您可以将条件代码移动到protected构造函数,只需从中调用该构造函数public:
public Foo() : this(true)
{
}
protected Foo(bool connect)
{
if(connect) //...
}
Run Code Online (Sandbox Code Playgroud)
一种方法是创建一个init()函数:
public Foo()
{
// ...
init();
}
protected Foo(bool connect)
{
// ...
if (connect) {
init();
}
}
Run Code Online (Sandbox Code Playgroud)