/// <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)); } } }