首先 要silverlight支持的对象
silverlight支持list<>我们最好用这个
然后只能用silverlight类库建对象类,在c#其他程序中引用silverlight类库,所有程序是共享的silverlight对象类库,silverlight是无法引用其他程序类库的
附上一个 序列化反序列化代码,在其他程序中反序列化直接 引用silverlight类库中的方法出错,原因不明,所以在其他程序中,再把这个代码写一遍,用来反序列化。
public class FormatSerializableSilverlight
{
#region Serialize
/// <summary>
/// Json序列化
/// </summary>
/// <param name="FormatObject"></param>
/// <returns></returns>
public static String SerializeJson(object FormatObject)
{
Type T = FormatObject.GetType();
//json序列化开始
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(T);
ser.WriteObject(ms, FormatObject);
byte[] json = ms.ToArray();
ms.Close();
string jsonString = Encoding.UTF8.GetString(json, 0, json.Length);//序列化得到的字符串
return jsonString;
}
/// <summary>
/// XML序列化
/// </summary>
/// <param name="FormatObject"></param>
/// <returns></returns>
public static String SerializeXML(object FormatObject)
{
Type T = FormatObject.GetType();
//xml序列化开始
MemoryStream ms = new MemoryStream();
XmlSerializer xml = new XmlSerializer(T);
xml.Serialize(ms, FormatObject);//xml序列化的关键代码
byte[] arr = ms.ToArray();
ms.Close();
string xmlString = Encoding.UTF8.GetString(arr, 0, arr.Length);
ms.Close();
return xmlString;
}
/// <summary>
/// DataContract序列化
/// </summary>
/// <param name="FormatObject"></param>
/// <returns></returns>
public static String SerializeDataContract(object FormatObject)
{
Type T = FormatObject.GetType();
//DataContract方式序列化
MemoryStream ms = new MemoryStream();
DataContractSerializer ser = new DataContractSerializer(T);
ser.WriteObject(ms, FormatObject);
byte[] array = ms.ToArray();
ms.Close();
string DataContractString = Encoding.UTF8.GetString(array, 0, array.Length);
return DataContractString;
}
#endregion
#region Deserialize
/// <summary>
/// Json反序列化好像只能反序列化成Json对象,对象需要自己赋值?
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static JsonValue DeserializeJson(string jsonString)
{
//json字符串解析(相当于反序列化)
JsonValue jsonv = JsonObject.Parse(jsonString);
return jsonv;
//Person pTest = new Person() { Age = int.Parse(jsonv["Age"].ToString()), Name = jsonv["Name"].ToString() };
}
/// <summary>
/// XML反序列化
/// </summary>
/// <param name="xmlString"></param>
/// <returns></returns>
public static Object DeserializeXML<T>(string xmlString)
{
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xmlString));
XmlSerializer xml = new XmlSerializer(typeof(T));
T O = (T)xml.Deserialize(ms);//xml反序列化的关键代码
ms.Close();
return O;
}
/// <summary>
/// DataContract反序列化
/// </summary>
/// <param name="xmlString"></param>
/// <returns></returns>
public static T DeserializeDataContract<T>(string DataContractString)
{
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(DataContractString));
DataContractSerializer ser = new DataContractSerializer(typeof(T));
T O = (T)ser.ReadObject(ms);
ms.Close();
return O;
}
#endregion
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2008-10-27 加密Web.Config(小技巧)
2006-10-27 C#中构造函数重载的用法