web service 自定义类的传递
基本处理方法:类对象的序列化与反序列化
/// <summary>
/// 实体类集合序列化为字符串
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="objToXml"></param>
/// <returns>字符串</returns>
private string Serializer<T>(T objToXml)
{
System.IO.StringWriter writer = new System.IO.StringWriter();
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(objToXml.GetType());
serializer.Serialize(writer, objToXml);
return writer.GetStringBuilder().ToString();
}
/// <summary>
/// 反序列化成类
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sXml"></param>
/// <param name="type"></param>
/// <returns>泛型对象</returns>
private T DeSerializerCollection<T>(string sXml, Type type)
{
XmlReader reader = XmlReader.Create(new StringReader(sXml));
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(type);
object obj = serializer.Deserialize(reader);
return (T)obj;
}
/// <summary>
/// 反序列化成类集合
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sXml"></param>
/// <param name="type"></param>
/// <returns>泛型对象集合</returns>
public Collection<T> DeSerializerCollection<T>(string sXml, Type type)
{
XmlReader reader = XmlReader.Create(new StringReader(sXml));
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(type);
object obj = serializer.Deserialize(reader);
return (Collection<T>)obj;
}
例子:web端向web service端发送一个请求,返回序列化后的string字符串,然后在web端再反序列化得到自定义类对象。
实体层:自定义对象TestEntity
业务层:
public class BllTest
{
public Entity GetTestEntity(string strParam)
{
...
}
}
web service端:
public class BllTest
{
[WebMethod]
public string GetTestEntity (string strParam)
{
BllTest bll = new BllTest();
TestEntity te = bll.GetTestEntity (strParam);
if (te!= null)
{
string strRtn = Serializer<TestEntity>(te);
return strRtn;
}
else
{
return string.Empty;
}
}
}
web层:
private void GetMethod()
{
string strTestEntity=BllTest .GetTestEntity(string strParam);
if ((string)strTestEntity!= string.Empty)
{
TestEntity entity= DeSerializerCollection<TestEntity>((string)strTestEntity, typeof(TestEntity)); //反序列化后赋给实体。
}
}
浙公网安备 33010602011771号