我有一个班级
public class Customer
{
...
}
我也有一种使用泛型的方法:
public static T Show<T>(DependencyObject sender, MessageBoxIcon icon, string caption, ObservableCollection<T> dataSource, MessageBoxButton button) where T : IComparable<T>, new()
{
...
}
现在,当我想在我的程序中调用它时:
Customer customerSelect = NoruBox.Show<Customer>(this, MessageBoxIcon.Box, "GridBox test", customerData, Noru.Controls.MessageBoxButton.SelectCancel);
我确实得到了一个错误。它表示类型Customer
不能用作T
中的类型参数Show<T>(...)
。没有从Customer
到System.IComparable<Customer>
的隐式引用转换。
我尝试public class Customer : IComparable
并将以下内容添加到Class
:
public int CompareTo(object obj)
{
var other = obj as Customer;
if (other == null) return 0;
return CompareTo(other);
}
但这没有任何区别。
答案 0 :(得分:1)
约束要求IComparable<Customer>
,而不是IComparable
:
public class Customer : IComparable<Customer> {
public int CompareTo(Customer other) {
...
}
...
}
答案 1 :(得分:1)
您想要比较每个Customer
实例的哪个方面?在下面的示例中,我假设A
包含键值。
public class Customer : IComparable<Customer>
{
public int CompareTo(Customer other)
{
if (other == null) return 1;
return this.A.CompareTo(other.A);
}
}