Example #1
0
        /// <summary>
        /// Write enum value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="val">Enum value.</param>
        public void WriteEnum <T>(T val)
        {
            // ReSharper disable once CompareNonConstrainedGenericWithNull
            if (val == null)
            {
                WriteNullField();
            }
            else
            {
                var desc = _marsh.GetDescriptor(val.GetType());

                if (desc != null)
                {
                    var metaHnd = _marsh.GetBinaryTypeHandler(desc);

                    _stream.WriteByte(BinaryUtils.TypeEnum);

                    BinaryUtils.WriteEnum(this, val);

                    SaveMetadata(desc, metaHnd.OnObjectWriteFinished());
                }
                else
                {
                    // Unregistered enum, write as serializable
                    Write(new SerializableObjectHolder(val));
                }
            }
        }