public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer, Action<object, SerializationInfo, StreamingContext> deserializeMethod)
        {
            // Create without construction and register before we call the constructor in case there are any cycles
            object result = FormatterServices.GetUninitializedObject(type);
            deserializer.Register(msg, result);

            var converter = new DeserializingFormatterConverter(deserializer);
            var si = new SerializationInfo(this.type, converter);
            PopulateSerializationInfo(si, msg);

            beforeAfterMixin.CallBeforeDeserialize(result);
            deserializeMethod(result, si, streamingContext);
            beforeAfterMixin.CallAfterDeserialize(result);

            return result;
        }
            public object Deserialize(IFudgeFieldContainer msg, IFudgeDeserializer deserializer, Action <object, SerializationInfo, StreamingContext> deserializeMethod)
            {
                // Create without construction and register before we call the constructor in case there are any cycles
                object result = FormatterServices.GetUninitializedObject(type);

                deserializer.Register(msg, result);

                var converter = new DeserializingFormatterConverter(deserializer);
                var si        = new SerializationInfo(this.type, converter);

                PopulateSerializationInfo(si, msg);

                beforeAfterMethodHelper.CallBeforeDeserialize(result);
                deserializeMethod(result, si, streamingContext);
                beforeAfterMethodHelper.CallAfterDeserialize(result);

                return(result);
            }