有效的GUID字符串提供从“System.String”到“System.Guid”的无效转换

时间:2017-01-08 05:59:39

标签: c# guid typeconverter iconvertible changetype

我正在运行以下代码:

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,所以不能真正改变实现,只能改变我的输入。

1 个答案:

答案 0 :(得分:6)

Guid.Parse接受一个字符串并将字符串值解释为Guid对象。 Convert.ChangeType尝试将字符串值本身直接更改为Guid

想象一下从阅读食谱中的食谱到做饭以及尝试将食谱本身变为晚餐之间的区别。