C# 初始化字典<;字符串,字符串>;在链接构造函数时
我试图以一种我认为不可能的方式设计一个链接构造函数的系统,但我想先检查一下 我有5个重载构造函数,如下所示:C# 初始化字典<;字符串,字符串>;在链接构造函数时,c#,.net,sql-server-ce,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 p
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 } })
{
}
公共SqlCeDB(字符串文件名)
公共SqlCeDb(字符串文件名、字典选项)
公共SqlCeDB(字符串文件名、字符串密码)
公共SqlCeDB(字符串文件名、字符串密码、字典选项)
公共SqlCeDB(字典选项)
我希望将所有逻辑构建到最后一个构造函数中,并让其他构造函数将控制权传递给它。现在我有一个正在工作的第一个构造函数,如下所示:
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 } })
{
}
公共SqlCeDB(字符串文件名)
:此(新字典{“数据源”,文件名})
{
}
但是,有没有办法为第二种情况做到这一点?我想如上所述创建一个新词典,但我还需要复制现有词典中名为“options”的选项。当然-只需调用创建现有词典副本的构造函数即可:
public SqlCeDB(string filename, Dictionary<string, string> options)
: this(new Dictionary<string, string>(options) {
{ "DataSource", filename }
})
{
}
公共SqlCeDB(字符串文件名、字典选项)
:此(新词典(选项){
{“数据源”,文件名}
})
{
}
集合初始值设定项仍可正常调用参数化构造函数。请注意,这将创建一个新的词典-它不仅会将新条目添加到现有条目中。当然-只需调用创建现有条目副本的构造函数即可:
public SqlCeDB(string filename, Dictionary<string, string> options)
: this(new Dictionary<string, string>(options) {
{ "DataSource", filename }
})
{
}
公共SqlCeDB(字符串文件名、字典选项)
:此(新词典(选项){
{“数据源”,文件名}
})
{
}
集合初始值设定项仍可正常调用参数化构造函数。请注意,这将创建一个新的词典-它不仅会将新条目添加到现有的词典中。不在我的开发机器上,但您不能这样做:这个(options.add(“DataSource”,filename)),不在我的开发机器上,但您不能这样做:这个(options.add(“DataSource”,filename))