我的应用程序中有几个类,它们都有一个Name
我想用作比较基础的属性(Distinct()
等)。因为我总是要比较Name
,所以我决定提取一个接口 ,ISomeComparedStuff
它只是具有Name
我所有其他类都实现的属性。我这样设置了一个比较类:
public class MyComparer : IEqualityComparer<ISomeComparedStuff>
{
public bool Equals(ISomeComparedStuff x, ISomeComparedStuff y)
{
return x.Name == y.Name;
}
public int GetHashCode(ISomeComparedStuff obj)
{
return obj.Name.GetHashCode();
}
}
唯一的问题是当我尝试对其进行编码时:
public class SomeStuff : ISomeComparedStuff
{
...
}
public class SomeMoreStuff : ISomeComparedStuff
{
...
}
var someStuff = GetSomeStuff().Distinct(new MyComparer);
var someMoreStuff = GetSomeMoreStuff().Distinct(new MyComparer);
我收到一个演员错误(SomeStuff
to ISomeComparedStuff
)。有没有办法做到这一点,所以我只需要一个比较类,否则我必须为我的每个类创建一个(即使我总是要比较Name
)?
注意:我理解这个问题“标题”需要帮助。任何建议都会很棒。