WCF返回匿名类型(抛弃datatable复杂类型,采用xml格式)

  前几天在遇到WCF返回匿名类型时,采用了datatable返回值,虽将nullable类型处理掉,发现在调用端生成很多实际用不上的XML。

  突然才想起为什么不返回string或XML格式数据呢,如此就能在服务端很好的控制格式。

  如下代码:

View Code
 ///<summary>
/// 转为XML类型
///</summary>
///<typeparam name="T">泛型参数</typeparam>
///<param name="array">IEnumerable</param>
///<param name="elementlistName">节点名称</param>
///<returns></returns>
public static XElement ConvertToXML<T>(this IEnumerable<T> array, string elementlistName)
{
try
{
XElement root = new XElement("root");
foreach (T item in array)
{
XElement element = new XElement(elementlistName);
foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
{
XElement node = new XElement(dp.Name, dp.GetValue(item) != null ? dp.GetValue(item).ToString() : "");
element.Add(node);
}
root.Add(element);
}
return root;
}
catch (Exception ex)
{
throw ex;
}
}

 

  如需分页等其他操作,可以在XML根节点添加属性即可;

posted @ 2011-06-07 12:27  半边书生9527  阅读(989)  评论(0编辑  收藏  举报