Есть ли способ де / сериализации объекта без обхода строки XmlDocument / temp? Я ищу что-то вроде следующего:
class Program
{
static void Main(string[] args)
{
XDocument doc = new XDocument();
MyClass c = new MyClass();
c.SomeValue = "bar";
doc.Add(c);
Console.Write(doc.ToString());
Console.ReadLine();
}
}
[XmlRoot(ElementName = "test")]
public class MyClass
{
[XmlElement(ElementName = "someValue")]
public string SomeValue { get; set; }
}
Однако, когда я это делаю, я получаю сообщение об ошибке (символы, не содержащие пробелов, не могут быть добавлены к содержимому.) Если я заключу класс в элемент, я вижу, что записанное содержимое - это <element> ConsoleApplication17.MyClass </element> - поэтому ошибка имеет смысл.
У меня делать есть методы расширения для автоматической де / сериализации, но это не то, что я ищу (это на стороне клиента, но мне все равно хотелось бы чего-то более оптимального).
Есть идеи?





Что-то вроде это?
public XDocument Serialize<T>(T source)
{
XDocument target = new XDocument();
XmlSerializer s = new XmlSerializer(typeof(T));
System.Xml.XmlWriter writer = target.CreateWriter();
s.Serialize(writer, source);
writer.Close();
return target;
}
public void Test1()
{
MyClass c = new MyClass() { SomeValue = "bar" };
XDocument doc = Serialize<MyClass>(c);
Console.WriteLine(doc.ToString());
}