1

我正在尝试以一种我认为不可能的方式设计一个链接构造函数的系统,但我想先检查一下。

我有 5 个重载的构造函数,如下所示:

public SqlCeDB(string filename)
public SqlCeDb(string filename, Dictionary<string, string> options)
public SqlCeDB(string filename, string password)
public SqlCeDB(string filename, string password, Dictionary<string, string> options)
public SqlCeDB(Dictionary<string, string> options)

我希望将所有逻辑都内置到最后一个构造函数中,并让其他逻辑将控制权传递给它。现在我有一个工作的第一个构造函数,如下所示:

public SqlCeDB(string filename)
    : this(new Dictionary<string, string> { { "DataSource", filename } })
{
}

但是有没有办法为第二个做到这一点?我想像上面那样创建一个新的字典,但我还需要复制现有字典中已经存在的选项,称为“选项”。

4

1 回答 1

6

当然 - 只需调用创建现有副本的构造函数:

public SqlCeDB(string filename, Dictionary<string, string> options)
    : this(new Dictionary<string, string>(options) {
               { "DataSource", filename }
           })
{
}

集合初始值设定项仍然可以正常调用参数化构造函数。请注意,这将创建一个字典 - 它不会只是将新条目添加到现有字典。

于 2012-07-08T18:30:21.760 回答