В частности, я думаю, что вы ищете этот код здесь (ПРИМЕЧАНИЕ: я мало работаю в VB.Net, поэтому я надеюсь, что все там синтаксически правильно):
VB.Net:
// Get the type of object being deserialized.
Dim t as Type = Type.GetType(typeNameString);
// Make a new instance of the object.
Dim o as Object = Activator.CreateInstance(t);
C #:
// Get the type of object being deserialized.
Type t = Type.GetType(typeNameString);
// Make a new instance of the object.
object o = Activator.CreateInstance(t);
Редактировать (26 октября 2009, 15:10 GMT-0600): Метод Type.GetType (string typeNameString) не всегда распознает типы как просто их полное имя. Было бы в ваших интересах быть уверенным и включать как можно больше информации в строку параметров следующим образом:
VB.Net / C #:
typeNameString = objectSerialized.GetType().Namespace + ", " + objectSerialized.GetType().Name + ", " + objectSerialized.GetType().Assembly.FullName
Менее конкретно, у меня просто была та же проблема, и после долгих исследований я наконец-то нашел хорошее решение для обработки всех большинства из этого динамически. Я разместил весь исходный код в классе, способном сериализовать и десериализовывать объекты любого типа , не содержащие обобщенных типов или массивов , с использованием Reflection. Не стесняйтесь взять его и использовать как свой собственный. Если кто-то решит добавить обработку для дженериков и массивов, пришлите мне обновленную копию, чтобы я мог опубликовать ее в своем блоге (и вы получите достойное упоминание; -) ...). Он будет рекурсивно сериализовать все, и там будет специальное кодирование для перечислений.
Взгляните и посмотрите, охватывает ли это все, что вы ищете:
http://maxaffinity.blogspot.com/2009/10/serialize-objects-manually.html
~ md5sum ~
Редактировать (27 октября 2009 14:38 GMT-0600): Исправлена некоторая дезинформация о классе, доступная в моем блоге.