<PackageReference Include="Castle.Core" Version="4.4.1" />

VirtualSite<TNode, TMember>

public sealed class VirtualSite<TNode, TMember> : IVirtualSite<TNode>, IEquatable<VirtualSite<TNode, TMember>>
using Castle.Core; using System; using System.Collections.Generic; namespace Castle.Components.DictionaryAdapter { public sealed class VirtualSite<TNode, TMember> : IVirtualSite<TNode>, IEquatable<VirtualSite<TNode, TMember>> { private readonly IVirtualTarget<TNode, TMember> target; private readonly TMember member; private static readonly IEqualityComparer<IVirtualTarget<TNode, TMember>> TargetComparer = ReferenceEqualityComparer<IVirtualTarget<TNode, TMember>>.Instance; private static readonly IEqualityComparer<TMember> MemberComparer = EqualityComparer<TMember>.Default; public IVirtualTarget<TNode, TMember> Target => target; public TMember Member => member; public VirtualSite(IVirtualTarget<TNode, TMember> target, TMember member) { this.target = target; this.member = member; } public void OnRealizing(TNode node) { target.OnRealizing(node, member); } public override bool Equals(object obj) { return Equals(obj as VirtualSite<TNode, TMember>); } public bool Equals(VirtualSite<TNode, TMember> other) { if (other != null && TargetComparer.Equals(target, other.target)) return MemberComparer.Equals(member, other.member); return false; } public override int GetHashCode() { return 1928399421 + 37 * TargetComparer.GetHashCode(target) + 37 * MemberComparer.GetHashCode(member); } } }