public override void GetObjectData(SerializationInfo info, StreamingContext context) { base.GetObjectData(info, context); info.AddValue(aiTypeSerializationName, intelligence.GetType().FullName, typeof(string)); //This way doesn't work //info.AddValue(aiSerializationName, intelligence.ToString(), typeof(string)); intelligence.GetObjectData(info, context); info.AddValue(sensingSerializationName, SensePg.Method.Name, typeof(string)); info.AddValue(perceptionDistanceSerializationName, perceptionDistance, typeof(int)); info.AddValue(squaredPerceptionDistanceSerializationName, squaredPerceptionDistance, typeof(int)); }