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);
}
}
}