Опубликовать это как ответ, так как технически это работает и отвечает на вопрос.Однако, это похоже на очень неприятный хак.Так что, если у кого-то есть альтернативное и лучшее решение, у меня все на слух.
string mystring= "if I check this code in it will at least have comedy value";
XmlDocument thisLooksBad = new XmlDocument();
thisLooksBad.LoadXml("<temp>" + mystring + "</temp>");
Widget stringWidget = new Widget();
stringWidget.Any = new XmlNode[1];
stringWidget.Any[0] = thisLooksBad.SelectSingleNode("/temp").FirstChild;
Как вы можете видеть, я помещаю свою строку в XmlDocument, завернутый в теги, это работает, компилируется и сериализуется без проблем - так что даэто решение, но мне кажется, что это неприятный хак.
string myxml = "<x><y>something</y></x>";
XmlDocument thisDoesntLookSoBad = new XmlDocument();
thisLooksBad.LoadXml(myxml);
Widget xmlWidget = new Widget();
xmlWidget.Any = new XmlNode[1];
xmlWidget.Any[0] = thisDoesntLookSoBad;
В этом примере я помещаю свой XML в XmlDocument, а затем назначаю его сгенерированному классу.Это имеет больше смысла, так как я работаю с XML, а не с необработанной строкой.
Любопытно, что я тоже могу это сделать, и это тоже работает (но это тоже неприятный хак):
string myxml = "<x><y>something</y></x>";
XmlDocument dom = new XmlDocument();
dom.LoadXml("<temp>" + myxml + "</temp>");
Widget xmlWidget = new Widget();
xmlWidget.Any = new XmlNode[1];
xmlWidget.Any[0] = dom.SelectSingleNode("/temp").FirstChild;