Welcome 微信登录

首页 / 网页编程 / ASP.NET / 使用泛型以及通用方法将XML与OBJECT进行相互转换

使用泛型以及通用方法将XML与OBJECT进行相互转换2013-11-28 博客园 JasenKin过年的这段时间一直没有闲着,总体来说可以分为以下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反序列 化为对象,这种方法比较简单,而且易用。