Mega Code Archive

 
Categories / C# / Generics
 

Serialize and Deserialize generic objects

using System; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.IO; public class Starter {     public static void Main(string[] args) {         BinaryFormatter binary = new BinaryFormatter();         FileStream file = new FileStream("data.bin", FileMode.OpenOrCreate);         MyClass<int> obj = new MyClass<int>(5);         binary.Serialize(file, obj);         MyClass<int> obj1 = (MyClass<int>)         binary.Deserialize(file);         Console.WriteLine(obj1.GetValue());     } } [Serializable] public class MyClass<T> {     public MyClass(T init) {         fielda = init;     }     public void GetObjectData(SerializationInfo info,StreamingContext ctx) {         info.AddValue("fielda", fielda, typeof(T));     }     private MyClass(SerializationInfo info,StreamingContext ctx) {         fielda = (T)info.GetValue("fielda", typeof(T));     }     public void SetValue(T data) {         fielda = data;     }     public T GetValue() {         return fielda;     }     private T fielda = default(T); }