程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 使用泛型以及通用方法將XML與OBJECT進行相互轉換

使用泛型以及通用方法將XML與OBJECT進行相互轉換

編輯:關於ASP.NET

過年的這段時間一直沒有閒著,總體來說可以分為以下2個部分的學習。

1:ORMCodeHelper的參考 與學習。

2:MVC3的學習。

對於ORMCodeHelper(Keny的),完全的采用插件式開發,即插即用 ,個人感覺還是比較爽的,架構不錯。它包括了SQL SERVER 2000,SQL SERVER 2005以及ORACLE的相關C#代碼 的生成。比哥一年前寫的那個牛多了,哈哈,哥去年亂寫了個網頁版的 (http://www.cnblogs.com/jasenkin/archive/2010/02/11/1667511.html),現在看一年前的代碼,哥感歎 ,這個誰寫的代碼,TMD實在寫的太爛了!!!當然,ORMCodeHelper與CodeSmith相比,還是有差距的哦。霖 哥以前給我的codesmith模板(N層的),哥一直沒時間仔細看,哥知道那個模板可以把所有的代碼全部生成, 其中包括N層代碼、存儲過程、頁面等等。雖然時間就像乳溝,只要擠一擠總還是有的!但是,哥真的...... 本來9號哥都是請假休息的,唉,又要哥上班了....

還有就是對於MVC3,Razor實在太給力了,扔掉 MVC2吧,哈哈,@確實挺不錯的。

在ORMCodeHelper中,對於配置文件的使用的思路還是不錯的,哥學 以致用,提煉個泛型的出來(其實最主要的還是插件開發的架構)。對於XML與OBJECT的轉換來說,下面講的 是一種Serialize方法。其實哥還有另外一種通過反射將XML轉換成對象的方法,不過,涉及到公司****,那種 方法還是不寫了。當然,那種方法哥是可以橫著寫了(因為哥早就背在心裡了),哈哈,通用的代 碼....

先看代碼,如下:

public static class Serializer
    { 
    
        public static void Serialize<T>(string filePath, T[] array)  where T:new()
        {
            if (string.IsNullOrEmpty(filePath)||
                array == null||array.Length==0)
            {
                return;
            }
            try
            {
                XmlSerializerFactory xmlSerializerFactory = new XmlSerializerFactory();
                XmlSerializer xmlSerializer =
                    xmlSerializerFactory.CreateSerializer(array.GetType(), typeof(T).Name);
                Stream stream = new FileStream(filePath, FileMode.Create);
                xmlSerializer.Serialize(stream, array);
                stream.Close();
            }
            catch
            {
            }
        }
        public static void Serialize(string filePath, object obj)
        {
            if (string.IsNullOrEmpty(filePath) || obj == null)
            {
                return;
            }
            try
            {
                XmlSerializerFactory xmlSerializerFactory = new XmlSerializerFactory();
                XmlSerializer xmlSerializer =
                    xmlSerializerFactory.CreateSerializer(obj.GetType(), obj.GetType().Name);
                Stream stream = new FileStream(filePath, FileMode.Create);
                xmlSerializer.Serialize(stream, obj);
                stream.Close();
            }
            catch
            {
            }
        }
    }
public static List<T> Deserialize<T>(string filePath)  where T:new()
        {
            List<T> results=new List<T>();
            if (string.IsNullOrEmpty(filePath)||!File.Exists(filePath))
            {
                return results;
            } 
            object obj = null;
            try
            {
                XmlSerializerFactory xmlSerializerFactory = new XmlSerializerFactory();
                XmlSerializer xmlSerializer =
                    xmlSerializerFactory.CreateSerializer(typeof(T[]), typeof(T).Name);
                Stream stream = new FileStream(filePath, System.IO.FileMode.Open);
                obj = xmlSerializer.Deserialize(stream);
                stream.Close();
                results.AddRange(obj as T[]);
            }
            catch
            {
            }
                
            return results;
        }
        public static object Deserialize(string filePath, Type targetType)
        {
            if (string.IsNullOrEmpty(filePath)||!File.Exists(filePath) 
                || targetType == null)
            {
                return null;
            }
            object obj = null;
            try
            {
                XmlSerializerFactory xmlSerializerFactory = new XmlSerializerFactory();
                XmlSerializer xmlSerializer =
                    xmlSerializerFactory.CreateSerializer(targetType, targetType.Name);
                Stream stream = new FileStream(filePath, FileMode.Open);
                obj = xmlSerializer.Deserialize(stream);
                stream.Close();
            }
            catch
            {
            }
            return obj;
        }

從上面4個方法,可以看出主要是通過XmlSerializer將對象序列化為XML以及將XML反序列 化為對象,這種方法比較簡單,而且易用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved