I am working on an object encryption class. I have everything worked out but I want to be able to encrypt/decrypt any object type with one deserialize method. As of now the only
The type you want to deserialize must be known at compile time.. So your method can be like:
private T Deserialize<T>(byte[] param)
{
using (MemoryStream ms = new MemoryStream(param))
{
IFormatter br = new BinaryFormatter();
return (T)br.Deserialize(ms);
}
}
Now you can use it like
var myclass = Deserialize<MyClass>(buf);
You need to simply utilize the type parameter of your class.
By trying to dynamically do a GetType or a cast, you're forcing a runtime evaluation, rather than using generics to create a compile-time referenced version.
The type parameter will compile a separate version of your class that is strongly typed for every parameter type T that is encounted by the compiler. So T is actually a placeholder for a strong reference.
obj = (br.Deserialize(ms) as T);