我有一种方法,我最终设法满足我的需求:
protected bool TryChangeType(dynamic form)
{
try
{
Console.WriteLine(form.changeType); // "true"
// string type = form.changeType as string; // #1
// string type = Convert.ToString(form.changeType); // #2
string type = Convert.ChangeType(form.changeType, typeof(String)); // #3
return type.ToLower() == "true";
}
catch (Exception e)
{
return false;
}
}
首先,我开始使用form.changeType as string
(#1
) - 没有工作,NullReferenceException
。
然后,我尝试了Convert.ToString
(#2
) - 没有成功,RuntimeBinderException
,ToString(bool)
和ToString(DateTime)
之间的模糊通话。
经过一番环顾,我发现了ChangeType
- 它有效。
form
变量的类型为:Nancy.DynamicDictionary
而form.changeType
是:Nancy.DynamicDictionaryValue
为什么会出现这种不一致的情况,有什么区别?