Serialize and Deserialize generic objects

image_pdfimage_print
   
 
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);
}

    


This entry was posted in Generics. Bookmark the permalink.