【发布时间】:2017-01-08 05:59:38
【问题描述】:
我正在运行以下代码:
var guidStr = "C105534D-E001-46F1-874A-322E5E0E132C";
var guid1 = Guid.Parse(guidStr);
var guid2 = Convert.ChangeType(guidStr, typeof(Guid));
Console.WriteLine(guid1 + " " + guid2);
虽然guid1 可以正常获取值,但guid2 行会抛出异常:
Invalid cast from 'System.String' to 'System.Guid'.
at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType)
有什么区别?
不幸的是,我使用给定的dll 在第二次解析时失败,因此无法真正更改实现,只有我的输入。
【问题讨论】:
-
不幸的是,
String(从Convert.ChangeType调用)的IConvertible.ToType实现委托给不支持String到Guid的通用转换函数(DefaultToType)。您将无法为此使用Convert。
标签: c# guid typeconverter iconvertible changetype