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根节点添加属性即可;