XmlWriter.WriteValue() passing a
Guid as the parameter throws an
StringWriter stringWriter = new StringWriter(); XmlTextWriter writer = new XmlTextWriter(stringWriter); writer.WriteValue(Guid.NewGuid());
The exception thrown is:
InvalidCastException: Xml type 'List of xdt:untypedAtomic' does not support a conversion from Clr type 'Guid' to Clr type 'String'.
I don’t see any way around this except by casting the
Guid to a
string before passing to
WriteValue(). Since this overload accepts an object type, even an extension method taking a
Guid doesn’t help because the instance method is the one preferred by the compiler.
string seems to be the only option.
XmlConvert.ToString() has an overload that accepts a
Guid parameter, so we know that will work correctly. The real question is why does
XmlWriter not just handle a
Guid parameter itself?