C# 如何使用XmlSerializer选择性地序列化字段和属性

C# 如何使用XmlSerializer选择性地序列化字段和属性,c#,serialization,C#,Serialization,问题是我有一个测试类和一个TestVariable,我想序列化测试类而不序列化TestVariable: public class TestClass { public int TestVariable { get; set; } public int ControlVariable { get; set; } public TestClass() {

问题是我有一个测试类和一个TestVariable,我想序列化测试类而不序列化TestVariable:

public class TestClass
{

    public int TestVariable
    {
        get;
        set;

    }
    public int ControlVariable
    {
        get;
        set;
    }

    public TestClass()
    {
        TestVariable = 1000;
        ControlVariable = 9999;
    }
}
执行序列化的代码:

public static void PrintClass()
{
    new XmlSerializer(typeof(TestClass)).Serialize(Console.Out, new TestClass());
}

包括命名空间System.Xml.Serialization,并在要在序列化中排除的字段或属性上添加属性[XmlIgnore]

修改上述代码时,它将如下所示:

public class TestClass
{

    [XmlIgnore]
    public int TestVariable
    {
        get;
        set;
    }

    public int ControlVariable
    {
        get;
        set;
    }

    public TestClass()
    {
        TestVariable = 1000;
        ControlVariable = 9999;
    }
}

这将导致TestVariable完全从序列化中排除。

我发现这种方法不灵活,因为它是在编译时定义的。IMHO,使用方法要灵活得多。我必须同意,它肯定是不灵活的,但有时您可能不需要序列化方法所提供的灵活性。在我的例子中,我有一个类,在编译时我知道我永远不需要序列化这些值。所以我选择了一个简单的解决方案来完成这项工作。我在搜索时找不到一个非常简单的解决方案,所以我把我的问题和发现发布出来,以便其他人可以从中受益。