Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 初始化字典<;字符串,字符串>;在链接构造函数时_C#_.net_Sql Server Ce - Fatal编程技术网

C# 初始化字典<;字符串,字符串>;在链接构造函数时

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

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

我有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 } })
{
}
公共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))