| File: System\Windows\Forms\DataBinding\BindingMemberInfo.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms\System.Windows.Forms.csproj (System.Windows.Forms) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Windows.Forms; public readonly struct BindingMemberInfo : IEquatable<BindingMemberInfo> { private readonly string? _dataList; private readonly string? _dataField; public BindingMemberInfo(string? dataMember) { dataMember ??= string.Empty; int lastDot = dataMember.LastIndexOf('.'); if (lastDot != -1) { _dataList = dataMember[..lastDot]; _dataField = dataMember[(lastDot + 1)..]; } else { _dataList = string.Empty; _dataField = dataMember; } } public string BindingPath => _dataList ?? string.Empty; public string BindingField => _dataField ?? string.Empty; public string BindingMember => BindingPath.Length > 0 ? $"{BindingPath}.{BindingField}" : BindingField; public override bool Equals(object? otherObject) { if (otherObject is not BindingMemberInfo otherMember) { return false; } return Equals(otherMember); } public bool Equals(BindingMemberInfo other) => string.Equals(BindingMember, other.BindingMember, StringComparison.OrdinalIgnoreCase); public static bool operator ==(BindingMemberInfo a, BindingMemberInfo b) => a.Equals(b); public static bool operator !=(BindingMemberInfo a, BindingMemberInfo b) => !a.Equals(b); public override int GetHashCode() => base.GetHashCode(); }