-1

我从如下所示的XML产生自动类:如何访问该对象阵列

public partial class XmlClass { 

private decimal num1; 

private ClassA[] classField; 

/// <remarks/> 
public decimal num1 { 
    get; 
    set; 
    } 
} 

/// <remarks/> 
[System.Xml.Serialization.XmlElementAttribute("classA")] 
public ClassA[] classA { 
    get{...}; 
    set{...}; 

} 

}

public partial class ClassA { 

private object[] itemsField; 

private string typeField; 

[System.Xml.Serialization.XmlElementAttribute("commands", typeof(classACommands))] 

[System.Xml.Serialization.XmlElementAttribute("minVersion", typeof(string))] 
public object[] Items { 
    get { 
     return this.itemsField; 
    } 
    set { 
     this.itemsField = value; 
    } 
} 

[System.Xml.Serialization.XmlAttributeAttribute()] 
public string type { 
    get { 
     return this.typeField; 
    } 
    set { 
     this.typeField = value; 
    } 
} 

}

ClassA的具有字符串和命令类作为Object[]中的对象。我可以看到所有的东西都是完美的反序列化,并且通过:(commands)myXmlClass.classA.ElementAt(i).Items[3]得到它们,其中i来自ClassA数组的索引。但是我如何在不使用'3'的情况下获取或设置它们?不同的ClassA元素可能会有所不同。

+0

...指数? – MiMo

+0

...'myXmlClass.classA.ElementAt(i)'是'ClassA'类型,为什么要转换为'commands'?你的代码似乎也遗漏了在[[System.Xml.Serialization.XmlElementAttribute(“commands”,typeof(classACommands))]' – MiMo

+0

之后的一个属性的声明,实际上我在ClassA下有更多的对象,并不是所有的ClassA元素实际上都有相同数量的对象。所以同一对象的索引在不同的ClassA元素中可能会有所不同。例如,数组中的第一个ClassA。命令OBJ可能在3被索引,但在第三可能是4.我的代码中有xmlElementAttribute声明,它是命令)myXmlClass.classA.ElementAt(i).Items [3],而不是命令)myXmlClass.classA .ElementAt(i)...谢谢。 – NewDTinStackoverflow

回答

0

不知道我完全理解你的问题,但你可以使用foreach循环:如果你有你需要一个索引来访问其元素的数组为什么你想不使用

foreach(ClassA a in myXmlClass.classA) { 
    Console.WriteLine(a.num1.ToString()); 
} 
+0

我没有从ClassA数组classA中获取ClassA的问题。我试图在classA中获取ClassA项目的对象项目,命令类别或minVersion字符串的对象。第一个XMLclass包含一个ClassA数组。该数组中的每个ClassA项目都包含一个对象数组,其中包含来自xmlElements的不同对象。 – NewDTinStackoverflow