Цель сериализации объекта - сохранить состояние объекта и восстановить его позже. Поля объекта отображаются на элементы и атрибуты XML, и наоборот. XMLSerializer ничего не отображает в комментарии или наоборот, поэтому вы не можете десериализовать комментарии для чего-либо в вашем объекте.
Однако, если вы используете XmlReader (как сказал @Amigable), который вы передаете методу Deserialize (), вы можете использовать этот XmlReader для отдельного обхода дерева в поисках комментарии.
К сожалению, это затрудняет подключение комментариев к десериализованным членам, но, возможно, вы могли бы использовать обработчики событий узла десериализации, чтобы помочь с этим.
Обновление: небольшая проработка по использованию XmlReader с десериализацией:
Вы указали свой код как:
XmlSerializer objSer = new XmlSerializer(typeof(CustomSchema));
StreamReader srmRdr = new StreamReader("Test.XML");
objForm = (CustomSchema)objSer.Deserialize(srmRdr);
Я ничего не знаю о .NETCF или WM. (Я тоже ничего не знал о XmlSerializer, но я просто смотрю на документы .) Однако вот что я пытался описать выше.
Я подумал, что вы можете использовать XmlReader для Deserialize () и затем использовать его повторно, но, очевидно, он предназначен только для пересылки и поэтому не может быть сброшен в начало. Поэтому после десериализации повторно откройте «Test.XML» с помощью XmlReader:
XmlReader xmlRdr = XmlReader.Create("Test.XML");
Затем используйте код синтаксического анализа , показанный здесь :
// Parse the file
while (xmlRdr.Read())
{
switch (xmlRdr.NodeType)
{
case XmlNodeType.Element:
// You may need to capture the last element to provide a context
// for any comments you come across... so copy xmlRdr.Name, etc.
break;
case XmlNodeType.Comment:
// Do something with xmlRdr.value