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

时间:2012-07-08 18:27:38

标签: c# .net 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)

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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