/// <summary> /// Write enum value. /// </summary> /// <param name="val">Enum value.</param> /// <param name="type">Enum type.</param> internal void WriteEnum(int val, Type type) { var desc = _marsh.GetDescriptor(type); _stream.WriteByte(BinaryTypeId.Enum); _stream.WriteInt(desc.TypeId); _stream.WriteInt(val); var binaryTypeHolder = Marshaller.GetCachedBinaryTypeHolder(desc.TypeId); if (binaryTypeHolder == null || !binaryTypeHolder.IsSaved) { // Save enum fields only once - they can't change locally at runtime. var metaHnd = _marsh.GetBinaryTypeHandler(desc); var binaryFields = metaHnd.OnObjectWriteFinished(); SaveMetadata(desc, binaryFields); } }