public class Person { string firstname; string lastname; int age; public string FirstName { get { return firstname; } set { firstname = value; } } public string LastName { get { return lastname; } set { lastname = value; } } public int Age { get { return age; } set { age = value; } } } 将要被序列化的数据对象:
private List<Person> GeneratePersonData() { List<Person> data = new List<Person>(); data.Add(new Person() { FirstName = "Kate", LastName = "Brown", Age = 25 }); data.Add(new Person() { FirstName = "Tom", LastName = "Stone", Age = 63 }); data.Add(new Person() { FirstName = "Michael", LastName = "Liberty", Age = 37 }); return data; }
// Write to the Isolated Storage XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); xmlWriterSettings.Indent = true; using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("People.xml", FileMode.Create)) { XmlSerializer serializer = new XmlSerializer(typeof(List<Person>)); using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings)) { serializer.Serialize(xmlWriter, GeneratePersonData()); } } }
问题一:怎样把这个处理过程封装成一个方法???是不是封装成下面这样???
/// <summary>
/// 创建和读取XML文件
/// </summary>
/// <param name="xmlname">XML文件名</param>
/// <param name="obj">模型实体类</param>
public void CreateAndWriteXML(string xmlname,object obj)
{
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.Indent = true;
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile(xmlname, FileMode.Create))
{
[color=#FF0000]XmlSerializer serializer = new XmlSerializer(typeof(object));
问题二:这里在原方法中是“ XmlSerializer serializer = new XmlSerializer(typeof(List<Person>)); ”,“List<Person>”在这里只能用一个参数表示,请问这个参数怎样定义,才可以让它传进来???//object指传入类的List集合
using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
{
//serializer.Serialize(xmlWriter, GeneratePersonData()); GenerateEntityData()指实体的List对象
}
}
}
}[/color]
private List<Person> GeneratePersonData() { List<Person> data = new List<Person>(); data.Add(new Person() { FirstName = "Kate", LastName = "Brown", Age = 25 }); data.Add(new Person() { FirstName = "Tom", LastName = "Stone", Age = 63 }); data.Add(new Person() { FirstName = "Michael", LastName = "Liberty", Age = 37 }); return data; }
// Write to the Isolated Storage XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); xmlWriterSettings.Indent = true; using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("People.xml", FileMode.Create)) { XmlSerializer serializer = new XmlSerializer(typeof(List<Person>)); using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings)) { serializer.Serialize(xmlWriter, GeneratePersonData()); } } }
问题一:怎样把这个处理过程封装成一个方法???是不是封装成下面这样???
/// <summary>
/// 创建和读取XML文件
/// </summary>
/// <param name="xmlname">XML文件名</param>
/// <param name="obj">模型实体类</param>
public void CreateAndWriteXML(string xmlname,object obj)
{
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
xmlWriterSettings.Indent = true;
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile(xmlname, FileMode.Create))
{
[color=#FF0000]XmlSerializer serializer = new XmlSerializer(typeof(object));
问题二:这里在原方法中是“ XmlSerializer serializer = new XmlSerializer(typeof(List<Person>)); ”,“List<Person>”在这里只能用一个参数表示,请问这个参数怎样定义,才可以让它传进来???//object指传入类的List集合
using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
{
//serializer.Serialize(xmlWriter, GeneratePersonData()); GenerateEntityData()指实体的List对象
}
}
}
}[/color]
解决方案 »
- 做一个羽毛球馆管理系统,给客户订场,给点思路!谢谢!
- 如何设置DIV高度为浏览器大小百分比,并使用overflow
- .net网站 数据库建表问题
- 当用户上传的文件超过2M时,不允许上传。
- 为什么取到的是空值?而不是输入的值,应该怎么取得输入的值?
- 求16位MD5加密C#编写的函数
- 关于jmail的附件的属性data 和BinaryData的使用问题。(100大分)
- 救命啊,Excel导入出问题了。。。
- System.Data.DataRowView”不包含名为“id”的属性。奇怪的问题
- 难题求教: asp.net有无一条命令可使form中的控件全部处于禁止修改状态? 谢谢!!!
- AspNetPager url分页功能疑问??
- 我很疑问的一个问题
{
try
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bs = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.FileStream stream = new System.IO.FileStream(filename, System.IO.FileMode.Create);
bs.Serialize(stream, value);
stream.Close();
return true;
}
catch
{
return false;
}
}
public static T DeSerialize<T>(string filename)
{
T obj;
if (!System.IO.File.Exists(filename))
return default(T);
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bs = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
System.IO.FileStream stream = new System.IO.FileStream(filename, System.IO.FileMode.Open);
obj = (T)bs.Deserialize(stream);
stream.Close();
return obj;
}
改为
XmlSerializer serializer = new XmlSerializer(object.GetType());
{
List<Person> persons = balabala;
Create(persons);
}public void Create(List<Person> persons)
{
//balabala...
}
{
return obj.序列化(typeof(T));
}public static string 序列化(this object obj, Type type)
{
DataContractJsonSerializer serilializer = new DataContractJsonSerializer(type);
using (var stream = new MemoryStream())
{
serilializer.WriteObject(stream, obj);
return Encoding.UTF8.GetString(stream.ToArray());
}
}
在测试程序中,比如对于对象x,可以使用Console.WriteLine(x.序列化());来打印它。