using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Threading.Tasks;
using System.Linq.Dynamic;
using System.Runtime.Serialization.Formatters.Binary;
class MyData : ISerializable
public string Name { get; set; }
public int? Value { get; set; }
public MyData(SerializationInfo info, StreamingContext context)
if (info.GetString("Value") == null)
Console.WriteLine("null");
public void GetObjectData(SerializationInfo info, StreamingContext context)
info.AddValue("Name", Name);
public static MemoryStream SerializeToStream(object o)
MemoryStream stream = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, o);
public static object DeserializeFromStream(MemoryStream stream)
IFormatter formatter = new BinaryFormatter();
stream.Seek(0, SeekOrigin.Begin);
object o = formatter.Deserialize(stream);
public static void Main(string[] args)
var myData = new MyData();
var serialized = SerializeToStream(myData);
var deserialized = DeserializeFromStream(serialized);