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

Mug*_*gen 0 c# guid typeconverter changetype iconvertible

我正在运行以下代码:

var guidStr = "C105534D-E001-46F1-874A-322E5E0E132C";
var guid1 = Guid.Parse(guidStr);
var guid2 = Convert.ChangeType(guidStr, typeof(Guid));
Console.WriteLine(guid1 + " " + guid2);
Run Code Online (Sandbox Code Playgroud)

虽然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)
Run Code Online (Sandbox Code Playgroud)

有什么不同?

不幸的是我使用的dll是第二次解析失败的给定,所以不能真正改变实现,只有我的输入.

Abi*_*n47 6

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

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