如何实施IComparer
int CompareTo(object obj)
附加参数,例如
int CompareTo(object obj, Dictionary<int, int> preferences)
首选项是包含Id
和NumberOfClicks<int, int>
我想要的是将categoryId的内容与字典中的点击次数进行比较,
示例Cat 1有3次点击,Cat 2有6次点击。
通过比较排序
preferences[this.CategoryId].value > preferences[object.CategoryId].value
因此,它们按类别排序,但与Dictionary
相关。
答案 0 :(得分:5)
您无法将额外参数传递给IComparer
的{{1}}方法,因为方法签名必须与界面中的签名匹配。
您可以做的是使用额外参数构造Compare
的实例,将其存储在实例中,并根据需要在IComparer
内使用:
CompareTo
答案 1 :(得分:0)
创建一个单独的比较器类来实现IComparer<T>
,而不是让类型本身实现IComparable
,并让它在其构造函数中接受Dictionary
。然后,比较器可以在比较对象的实例时使用字典。