陋室铭
永远也不要停下学习的脚步(大道至简至易)

posts - 2169,comments - 570,views - 413万

首先 要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
    }

 

 

posted on   宏宇  阅读(747)  评论(0编辑  收藏  举报
编辑推荐:
· 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#中构造函数重载的用法
< 2011年10月 >
25 26 27 28 29 30 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示