Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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# 属性的反序列化赢得';不起作用,但在TestProject和通用列表中起作用_C#_Xml_Serialization_Properties_Deserialization - Fatal编程技术网

C# 属性的反序列化赢得';不起作用,但在TestProject和通用列表中起作用

C# 属性的反序列化赢得';不起作用,但在TestProject和通用列表中起作用,c#,xml,serialization,properties,deserialization,C#,Xml,Serialization,Properties,Deserialization,我在反序列化ApplicationSettings类时遇到了一个奇怪的问题。 该类如下所示: [Serializable] public class ApplicationSettings { public string SelectedGeneralSetting { get; set; } public string SelectedCheckSetting { get; set; } public string SelectedDataBaseSetting { g

我在反序列化ApplicationSettings类时遇到了一个奇怪的问题。 该类如下所示:

[Serializable]
public class ApplicationSettings
{
    public string SelectedGeneralSetting { get; set; }
    public string SelectedCheckSetting { get; set; }
    public string SelectedDataBaseSetting { get; set; }
    public string SelectedCompareSetting { get; set; }

    public List<GeneralSetting> GeneralSettings = new List<GeneralSetting>();
    public List<CheckSetting> CheckSettings = new List<CheckSetting>();
    public List<DataBaseSetting> DataBaseSettings = new List<DataBaseSetting>();
    public List<CompareSetting> CompareSettings = new List<CompareSetting>();

    public ApplicationSettings()
    {

    }
}
有两件奇怪的事情,列表也包含很多属性,并且它们被正确地反序列化。我创建了一个测试项目,其中包含一个公共成员和属性以及一个通用列表,所有这些都已成功反序列化。我真的不知道为什么它不应该在我的“主要项目”中工作。有人有什么建议吗?反序列化怎么会表现得如此怪异?
你好

这段代码对我有用

    private void Form1_Load(object sender, EventArgs e)
            {
                XmlSerializer serializer = new XmlSerializer(typeof(ApplicationSettings));
                XmlReader reader = XmlReader.Create(new StringReader(
                    @"<?xml version=""1.0""?> <ApplicationSettings>
 <SelectedGeneralSetting>Default</SelectedGeneralSetting>
    <GeneralSettings>
    <GeneralSetting><Name>DDD</Name></GeneralSetting>
    </GeneralSettings></ApplicationSettings>"));
                var result = (serializer.Deserialize(reader) as ApplicationSettings);
            }

            [Serializable]
            public class ApplicationSettings
            {
                public string SelectedGeneralSetting { get; set; }
                public List<GeneralSetting> GeneralSettings = new List<GeneralSetting>();
            }

            public class GeneralSetting
            {
                public string Name { get; set; }
            }
private void Form1\u加载(对象发送方,事件参数e)
{
XmlSerializer serializer=新的XmlSerializer(typeof(ApplicationSettings));
XmlReader=XmlReader.Create(新建StringReader)(
@" 
违约
DDD
"));
var result=(序列化程序.反序列化(读取器)为应用程序设置);
}
[可序列化]
公共类应用程序设置
{
公共字符串SelectedGeneralSetting{get;set;}
public List GeneralSettings=new List();
}
公共类通用设置
{
公共字符串名称{get;set;}
}

检查示例文本中的[BR]文本

是否在
反序列化()中遗漏了变量名

应该是:

ApplicationSettings=(序列化程序.反序列化(文件)为ApplicationSettings);

SelectedGeneralSetting是字符串,GeneralSetting是GeneralSetting的列表。目前尚不清楚SelectedGeneralSetting中的预期内容。发布您正试图从“xmlns:xsd=“>Default[br]Default Default…”反序列化的属性中反序列化的xml。。。谢谢你的努力和回答。奇怪的是,如上所述,在测试项目中使用相同的反序列化代码时,反序列化工作得很好。我看不出这两个项目中的算法或声明之间有任何区别,但在一个项目中它反序列化属性,在另一个项目中它没有。请检查.net版本和序列化程序设置,以及检查源文件。奇怪,但我没有看到任何其他问题。我已将两个项目上的.NET版本更改为4.0,不幸的是,问题仍然存在。不,实际上ApplicationSettings是ApplicationSettings的实例;)真的很奇怪。。。我将查看是否是因为我正在从中读取序列化设置的目录。但为什么在一种情况下它要反序列化属性,而在另一种情况下却不反序列化属性呢(请尝试检查xml文件路径是否有效。它是有效的,因为否则它不会反序列化实例“GeneralSettings”或者甚至会崩溃。再一次,两个项目,相同的反序列化代码,一个反序列化公共属性和成员,另一个只是公共成员。而在只有成员反序列化的项目中,泛型列表的属性反序列化没有问题:-/
    private void Form1_Load(object sender, EventArgs e)
            {
                XmlSerializer serializer = new XmlSerializer(typeof(ApplicationSettings));
                XmlReader reader = XmlReader.Create(new StringReader(
                    @"<?xml version=""1.0""?> <ApplicationSettings>
 <SelectedGeneralSetting>Default</SelectedGeneralSetting>
    <GeneralSettings>
    <GeneralSetting><Name>DDD</Name></GeneralSetting>
    </GeneralSettings></ApplicationSettings>"));
                var result = (serializer.Deserialize(reader) as ApplicationSettings);
            }

            [Serializable]
            public class ApplicationSettings
            {
                public string SelectedGeneralSetting { get; set; }
                public List<GeneralSetting> GeneralSettings = new List<GeneralSetting>();
            }

            public class GeneralSetting
            {
                public string Name { get; set; }
            }