| File: System\Windows\Forms\DataBinding\BindingContext.HashKey.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. using System.Globalization; namespace System.Windows.Forms; public partial class BindingContext { private class HashKey { private readonly WeakReference _wRef; private readonly int _dataSourceHashCode; private readonly string _dataMember; internal HashKey(object dataSource, string? dataMember) { ArgumentNullException.ThrowIfNull(dataSource); dataMember ??= string.Empty; // The dataMember should be case insensitive, so convert the // dataMember to lower case _wRef = new WeakReference(dataSource, false); _dataSourceHashCode = dataSource.GetHashCode(); _dataMember = dataMember.ToLower(CultureInfo.InvariantCulture); } public override int GetHashCode() => HashCode.Combine(_dataSourceHashCode, _dataMember); public override bool Equals(object? target) { if (target is not HashKey keyTarget) { return false; } return _wRef.Target == keyTarget._wRef.Target && _dataMember == keyTarget._dataMember; } } }