/// <summary>
        /// Creates a event definition from a event metadata row.
        /// </summary>
        /// <param name="parentModule">The module that contains the event.</param>
        /// <param name="token">The token to initialize the event for.</param>
        /// <param name="row">The metadata table row to base the event definition on.</param>
        public SerializedEventDefinition(SerializedModuleDefinition parentModule, MetadataToken token, EventDefinitionRow row)
            : base(token)
        {
            _parentModule = parentModule ?? throw new ArgumentNullException(nameof(parentModule));
            _row          = row;

            Attributes = row.Attributes;
        }
예제 #2
0
        /// <summary>
        /// Allocates metadata rows for the provided event definitions in the buffer.
        /// </summary>
        /// <param name="events">The events to define.</param>
        public void DefineEvents(IEnumerable <EventDefinition> events)
        {
            var table = Metadata.TablesStream.GetTable <EventDefinitionRow>(TableIndex.Event);

            foreach (var @event in events)
            {
                var row = new EventDefinitionRow(
                    @event.Attributes,
                    Metadata.StringsStream.GetStringIndex(@event.Name),
                    GetTypeDefOrRefIndex(@event.EventType));

                var token = table.Add(row);
                _tokenMapping.Register(@event, token);
            }
        }