| File: TelemetryEventArgs.cs | Web Access |
| Project: src\msbuild\src\Framework\Microsoft.Build.Framework.csproj (Microsoft.Build.Framework) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Collections.Generic; using System.IO; namespace Microsoft.Build.Framework { /// <summary> /// Arguments for telemetry events. /// </summary> [Serializable] public sealed class TelemetryEventArgs : BuildEventArgs { /// <summary> /// Gets or sets the name of the event. /// </summary> public string? EventName { get; set; } /// <summary> /// Gets or sets a list of properties associated with the event. /// </summary> public IDictionary<string, string?> Properties { get; set; } = new Dictionary<string, string?>(); internal override void WriteToStream(BinaryWriter writer) { base.WriteToStream(writer); writer.WriteOptionalString(EventName); int count = Properties?.Count ?? 0; writer.Write7BitEncodedInt(count); if (Properties == null) { return; } foreach (var kvp in Properties) { writer.Write(kvp.Key); writer.WriteOptionalString(kvp.Value); } } internal override void CreateFromStream(BinaryReader reader, int version) { base.CreateFromStream(reader, version); EventName = reader.ReadOptionalString(); int count = reader.Read7BitEncodedInt(); for (int i = 0; i < count; i++) { string key = reader.ReadString(); string? value = reader.ReadOptionalString(); Properties.Add(key, value); } } } }