如何将可序列化对象保存/恢复到文件? (第2部分)动态对象

时间:2011-05-25 02:55:07

标签: c# serialization stream

我之前问过问题How to save/restore serializable object to/from file? ,当我知道要保存什么类型的对象时,解决方案效果很好。

如果我可以保存未知类型的对象,那就太好了。

无论如何,我希望做的事情如下:

[Serializable]
MyCustomClass
{
   // properties. I don't know which properties this class has. I might pass a different class. 
}


public void saveObjectInComputer(object obj, string pathWhereToSaveObject)
{
     // code
}

 public object deserializeObject(string pathWhereObjectIsLocated)
 {
      // code to retrive object
      // ...

      return object;
 }

static void Main(string[] args)
{
     List<MyCustomClass> myList = new List<MyCustomClass>();
     myList.add(new MyCustomClass { "properties go here" } );

     saveObjectInComputer(myList, @"C:\Temp\object.txt");

     // code  

     // Later it will be nice if I could retrive the object 

     object a = deserializeObject(@"C:\Temp\object.txt");

     // then cast a to List<MyCustomClass>

}

后来,如果我构建汽车列表或人员列表,我可以使用相同的方法,而不是为每个方法构建一个新方法。此后我知道我正在寻找的方法将返回一个对象,我可以将该对象强制转换为我当前使用的类型。

1 个答案:

答案 0 :(得分:0)

您无法轻松序列化未使用Serializable属性标记的对象,因此简短答案为否。

如果你愿意进入适度困难的代码,你可以使用反射并设计一个自定义格式来保存状态,使用索引属性之类的例外等等。但你可能不会这样做。 / p>