如何以区分大小写的方式反序列化字符串?看起来序列化是区分大小写的,反序列化的重点是不区分大小写?
更新:尝试本地化底层的内容和内容,我已经设置了DEBUGGER来下载符号并进入FCL .NET代码。我已经卡在这些代码附近(DbConnectionOptions.cs第873-921行):
private static NameValuePair ParseInternal(Hashtable parsetable, string connectionString, bool buildChain, Hashtable synonyms, bool firstKey) {
Debug.Assert(null != connectionString, "null connectionstring");
StringBuilder buffer = new StringBuilder();
NameValuePair localKeychain = null, keychain = null;
int nextStartPosition = 0;
int endPosition = connectionString.Length;
while (nextStartPosition < endPosition) {
int startPosition = nextStartPosition;
string keyname, keyvalue;
nextStartPosition = GetKeyValuePair(connectionString, startPosition, buffer, firstKey, out keyname, out keyvalue);
if (ADP.IsEmpty(keyname)) {
// if (nextStartPosition != endPosition) { throw; }
break;
}
string realkeyname = ((null != synonyms) ? (string)synonyms[keyname] : keyname);
if (!IsKeyNameValid(realkeyname)) {
throw ADP.KeywordNotSupported(keyname);
}
修改发生在while循环内部,它在每次迭代中查找另一个键/值对。不幸的是,我不能'key watch'到keyname和realkeyname变量。我想同义词Hashtable在这里也很重要。
答案 0 :(得分:5)
答案 1 :(得分:0)
序列化肯定区分大小写,但是您的连接字符串不需要 - 您确定您的ConnectionString属性没有做一些奇怪的事情,例如:
public string ConnectionString
{
get
{
return this._ConnectionString;
}
set
{
this._ConnectionString = value != null ? value.ToLower() : null;
}
}
请注意,SqlConnectionStringBuilder
似乎会对连接字符串进行“规范化”,即“怪异”并不一定需要在您的代码中。
尝试在调试器中执行info.GetValue("ConnectionString", typeof(string));
,看看你得到了什么。