我有一个场景,其中一些遗留代码正在使用" Base"类型的对象。作为字典中的一个关键。
我有一个包装类,除了" Base"之外还可以做一些工作。对象,称之为" BaseAggregate"。它不是继承基础,它实现了一个通用的接口,但是将大部分工作分配给" Base"。
正在发生的是一些代码路径正在添加对象" Base"作为字典的关键。我无法更改此代码,但我可以将我的Equals和GetHashCode更改为使用相同的对象作为相等。
class BaseAggregate : IBase
{
private readonly IBase foo = new Base();
}
人们将Base对象作为关键。
public override bool Equals(object obj)
{
if (obj is BaseAggregate)
{
return base.Equals(obj);
}
if (obj is Base)
{
return this.foo.Equals(obj);
}
return false;
}
这是一个很好的实施吗?我的GetHashCode应该是什么?