Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C语言中忽略参数序列化#_C#_Xml_.net 4.0_Xml Serialization - Fatal编程技术网

C# 如何在C语言中忽略参数序列化#

C# 如何在C语言中忽略参数序列化#,c#,xml,.net-4.0,xml-serialization,C#,Xml,.net 4.0,Xml Serialization,我有一个需要在C#中序列化的对象,但是该对象具有以下属性: [XmlElement("NodeConfiguration")] public NodeConfigurationSerialize NodeConfiguration { get; set; } 在序列化过程中必须忽略此属性,在反序列化过程中必须考虑此属性,换句话说,我需要配置此属性,使其仅被序列化过程忽略 有人知道这是否可能吗?如果是,我怎么做 注意:我使用的是Visual Studio 2010和.NET Framework

我有一个需要在C#中序列化的对象,但是该对象具有以下属性:

[XmlElement("NodeConfiguration")]
public NodeConfigurationSerialize NodeConfiguration { get; set; }
在序列化过程中必须忽略此属性,在反序列化过程中必须考虑此属性,换句话说,我需要配置此属性,使其仅被序列化过程忽略

有人知道这是否可能吗?如果是,我怎么做


注意:我使用的是Visual Studio 2010和.NET Framework 4.0。

您可以实现
System.Xml.Serialization.IXmlSerializable
接口:

public NodeConfigurationSerialize : IXmlSerializable
{
    public void ReadXml(System.Xml.XmlReader reader) 
    {
        this.value = (String)reader.ReadElementContentAs(typeof(String), null);
    }

    public void WriteXml(System.Xml.XmlWriter writer) 
    {
        // do nothing
    }
}

我认为你的设计需要稍作改动。你需要用某种方式说‘这还没定下来’:

[XmlElement(IsNullable = true)]
public NodeConfigurationSerialize ? NodeConfiguration { get; set; }

当您不想将其设置为“null”时,可以将其设置为任意值。现在,您可以自动使用序列化/反序列化,而无需手动编辑文件。

如果在序列化过程中忽略它,那么在反序列化时会在其中添加什么内容?当对象序列化时,此属性具有一个无效值,但不在XML上。之后,用户会为该属性分配一个有效值,并且该值也会在不使用序列化过程的情况下输出到XML(我实际上使用XDocument打开XML并手动将其放在那里)。当我的程序初始化时,我打开XML并将其反序列化以读取其值。在这一点上,我需要拥有这个对象的所有值和NodeConfiguration属性。嗨,我同意必须对我正在开发的这个软件进行很多重新思考,坦率地说,如果由我决定,我会删除所有内容,从头开始,而不是一个接一个地进行解决。。。无论如何,在将对象序列化为XML之前,我按照您的建议将我的属性设置为null,得到了所需的结果。谢谢你的回答!嗨,谢谢你的回答!我认为你的建议也会奏效,但是我一直在思考@DanTheMan说的话,我意识到通过配置我的类不序列化此属性,将来可能会给我带来很多问题,主要是因为我会忘记我已经做了这件事,或者其他程序员会被分配到这个项目中,如果这个对象需要被序列化,那么在发现这个解决方法并使用另一个解决方法来循环它之前需要一些时间。。。