在链接构造函数时初始化Dictionary <string,string>

age*_*154 1 .net c# sql-server-ce

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

我有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)
Run Code Online (Sandbox Code Playgroud)

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

public SqlCeDB(string filename)
    : this(new Dictionary<string, string> { { "DataSource", filename } })
{
}
Run Code Online (Sandbox Code Playgroud)

但有没有办法在第二次做到这一点?我想创建一个新的Dictionary,如上所述,但我还需要复制现有Dictionary中已经被称为"options"的选项.

Jon*_*eet 6

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

public SqlCeDB(string filename, Dictionary<string, string> options)
    : this(new Dictionary<string, string>(options) {
               { "DataSource", filename }
           })
{
}
Run Code Online (Sandbox Code Playgroud)

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