Как сохранить / восстановить сериализуемый объект в / из файла?(часть 2) динамический объект - PullRequest
1 голос
/ 25 мая 2011

Ранее я задавал вопрос Как сохранить / восстановить сериализуемый объект в / из файла? это решение прекрасно работает, когда я знаю, какой тип объекта я буду сохранять.

Было бы хорошо, если бы я мог сохранить объект неизвестного типа.

В любом случае, я хочу сделать что-то вроде:

[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 голосов
/ 25 мая 2011

Вы не можете сериализовать объект, который не был легко помечен атрибутом Serializable, поэтому краткий ответ - нет.

Если вы хотите перейти к умеренно сложному коду, вы можете использовать отражение и придуматьпользовательский формат для сохранения состояний с использованием исключений для таких вещей, как индексированные свойства и т. д. Вы можете просто не делать этого, однако.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...