溫馨提示×

C#中的Attribute如何用于序列化和反序列化

c#
小樊
84
2024-08-12 04:38:38
欄目: 編程語言

在C#中,可以使用Attribute來控制對象的序列化和反序列化過程。下面是一個簡單的示例:

using System;
using System.IO;
using System.Xml.Serialization;

[Serializable]
public class Person
{
    [XmlAttribute]
    public string Name { get; set; }
    [XmlElement]
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "Alice", Age = 30 };

        // Serialize
        XmlSerializer serializer = new XmlSerializer(typeof(Person));
        using (FileStream fs = new FileStream("person.xml", FileMode.Create))
        {
            serializer.Serialize(fs, person);
        }

        // Deserialize
        using (FileStream fs = new FileStream("person.xml", FileMode.Open))
        {
            Person deserializedPerson = (Person)serializer.Deserialize(fs);
            Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
        }
    }
}

在上面的示例中,通過在屬性上添加[XmlAttribute][XmlElement]Attribute,可以指定在序列化時將屬性保存為XML的屬性或元素。然后使用XmlSerializer類進(jìn)行序列化和反序列化操作。

注意:如果需要在JSON格式中進(jìn)行序列化和反序列化操作,可以使用DataContractDataMemberAttribute來控制屬性的序列化行為。

0