循环通用列表<t> </t>中的属性值

时间:2012-03-23 10:48:15

标签: c# .net generics serialization reflection

我与一个在xml中返回数据的服务集成。 我使用xml serialize:

将它们反序列化为数据列表
[Serializable, XmlRoot("string", Namespace = "http://tempuri.org/", IsNullable = true)]
public class PositionPosting
{
   [XmlArray("JobCategories")]
   [XmlArrayItem("JobCategory", typeof(ExportItems))]
   public ExportItems[] JobCategory { get; set; }
}


[Serializable()]
public class ExportItems
{
    [XmlAttribute("key")]
    public string Key { get; set; }

    [XmlAttribute("text")]
    public string Value { get; set; }
}

结果我有这个:enter image description here

我为GetServiceData方法提供了序列化为xml所需的模型。

在此之后我创建了一个像IList这样的列表的方法:

private void UpdateDropDown<T>(IList<DropDownModel> model, IList<T> syncData) where T : class

如何从IList syncData中的JobCategories数组中获取属性和名称?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这个问题有点令人困惑;所以这是我的假设,我可以通过阅读几次来收集。

  1. GetServiceData(..)正在返回ExportItems
  2. 的数组
  3. 您想将信息传递给UpdateDropDown<T>(..)
  4. 现在,要将ExportItems[]转换为IList<ExportItem>,您只需创建一个实现IList<T>的对象实例,最好的示例是List<T>。这可以通过首先包括命名空间System.Linq,然后&#34; ToList&#34;来完成。使用Linq内置扩展的数组,如下所示:

    var data = this.GetServiceData<PositionPosting>(this.GetService(id));
    UpdateDropDown(model, data[0].ToList())
    

    希望这会有所帮助。 :)

    问题: this.GetServiceData<T>(..)的约束是什么?