我正在尝试以我认为可能无法实现的方式设计链接构造函数的系统,但我想首先检查。
我有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”的选项。
答案 0 :(得分:6)
当然 - 只需调用构造函数来创建现有文件的副本:
public SqlCeDB(string filename, Dictionary<string, string> options)
: this(new Dictionary<string, string>(options) {
{ "DataSource", filename }
})
{
}
Collection初始值设定项仍然可以正常调用参数化构造函数。请注意,这将创建一个 new 字典 - 它不会只是将新条目添加到现有字典中。