我想知道我(在C#或VB .NET中)如何将对象保存到文件中。
它需要与任何类型的对象兼容。我怎样才能做到这一点?假设我要保存“MyPersonClass”类型的对象。
我正在使用带有WPF的.NET 4.0框架。
答案 0 :(得分:2)
您应该从ISerializable接口继承您的类。可以在下一个链接中找到示例和解释:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable.aspx
答案 1 :(得分:2)
如果您的对象是Serializable,则可以使用此处描述的方法将其序列化并保存到磁盘:http://msdn.microsoft.com/en-us/library/4abbf6k0%28v=VS.100%29.aspx
答案 2 :(得分:2)
如果您正在寻找与非.NET应用程序的一些控制和兼容性,请考虑使用SoapFormatter类(如John Boker的MSDN链接中所述)或XML序列化。后者与标准序列化略有不同。
您需要XmlSerializer类:
System.Xml.Serialization.XmlSerializer
要使用XML序列化序列化MyPersonClass,您需要XmlSerializer和StreamWriter的实例(在System.IO中):
XmlSerializer serializer = new XmlSerializer(typeof(MyPersonClass));
StreamWriter xmlFile = new StreamWriter(@"InsertFileName");
serializer.Serialize(xmlFile, classInstance);
xmlFile.Close();
我希望这很有用!
答案 3 :(得分:1)
首先,您必须将对象标记为可序列化:
[System.Serializable]
public class MyPersonClass
{
public string Firstname
{
get;
set;
}
public string Lastname
{
get;
set;
}
}
之后,您可以使用BinaryFormatter类将每个对象保存为字节。
到字节:
public static byte[] ObjectToBytes(object obj)
{
byte[] objAsBlob;
using (System.IO.MemoryStream temp = new System.IO.MemoryStream())
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
formatter.Serialize(temp, obj);
objAsBlob = temp.ToArray();
}
return objAsBlob;
}
来自字节:
public static TObj BytesToObject<TObj>(byte[] blob)
{
object objFromBytes;
using (System.IO.MemoryStream temp = new System.IO.MemoryStream(blob))
{
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
objFromBytes = formatter.Deserialize(temp);
}
return (TObj)objFromBytes;
}