Generics C#

using System;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.IO;
    public class Test{
        public static void Main(string [] args){
            BinaryFormatter binary=new BinaryFormatter();
            FileStream file= new FileStream("test.dat", FileMode.OpenOrCreate);
            MyGenericClass obj=new MyGenericClass(5);
            binary.Serialize(file, obj);
        }
    }
    [Serializable] 
    public class MyGenericClass {
        public MyGenericClass(T init) {
            fielda=init;
        }
        public void GetObjectData(SerializationInfo info,StreamingContext ctx) {
            info.AddValue("fielda", fielda, typeof(T));
        }
        private MyGenericClass(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);
    }