| File: EventId.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.Extensions.Logging.Abstractions\src\Microsoft.Extensions.Logging.Abstractions.csproj (Microsoft.Extensions.Logging.Abstractions) |
// 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.Diagnostics.CodeAnalysis; namespace Microsoft.Extensions.Logging { /// <summary> /// Identifies a logging event. The primary identifier is the "Id" property, with the "Name" property providing a short description of this type of event. /// </summary> public readonly struct EventId : IEquatable<EventId> { /// <summary> /// Implicitly creates an EventId from the given <see cref="int"/>. /// </summary> /// <param name="i">The <see cref="int"/> to convert to an EventId.</param> public static implicit operator EventId(int i) { return new EventId(i); } /// <summary> /// Checks if two specified <see cref="EventId"/> instances have the same value. They are equal if they have the same ID. /// </summary> /// <param name="left">The first <see cref="EventId"/>.</param> /// <param name="right">The second <see cref="EventId"/>.</param> /// <returns><see langword="true" /> if the objects are equal.</returns> public static bool operator ==(EventId left, EventId right) { return left.Equals(right); } /// <summary> /// Checks if two specified <see cref="EventId"/> instances have different values. /// </summary> /// <param name="left">The first <see cref="EventId"/>.</param> /// <param name="right">The second <see cref="EventId"/>.</param> /// <returns><see langword="true" /> if the objects are not equal.</returns> public static bool operator !=(EventId left, EventId right) { return !left.Equals(right); } /// <summary> /// Initializes an instance of the <see cref="EventId"/> struct. /// </summary> /// <param name="id">The numeric identifier for this event.</param> /// <param name="name">The name of this event.</param> public EventId(int id, string? name = null) { Id = id; Name = name; } /// <summary> /// Gets the numeric identifier for this event. /// </summary> public int Id { get; } /// <summary> /// Gets the name of this event. /// </summary> public string? Name { get; } /// <inheritdoc /> public override string ToString() { return Name ?? Id.ToString(); } /// <summary> /// Compares the current instance to another object of the same type. Two events are equal if they have the same ID. /// </summary> /// <param name="other">An object to compare with this object.</param> /// <returns><see langword="true" /> if the current object is equal to <paramref name="other" />; otherwise, <see langword="false" />.</returns> public bool Equals(EventId other) { return Id == other.Id; } /// <inheritdoc /> public override bool Equals([NotNullWhen(true)] object? obj) { if (obj is null) { return false; } return obj is EventId eventId && Equals(eventId); } /// <inheritdoc /> public override int GetHashCode() { return Id; } } }