为什么在涉及动态时类型转换(ChangeType,ToString,as)存在不一致?

时间:2015-02-18 09:49:46

标签: c# nancy

我有一种方法,我最终设法满足我的需求:

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) - 没有成功,RuntimeBinderExceptionToString(bool)ToString(DateTime)之间的模糊通话。

经过一番环顾,我发现了ChangeType - 它有效。

更新

form变量的类型为:Nancy.DynamicDictionary

form.changeType是:Nancy.DynamicDictionaryValue

为什么会出现这种不一致的情况,有什么区别?

0 个答案:

没有答案