Gli*_*kot 1 c# generics interface type-conversion
希望我已经正确地描述了它.我有一个'通用方法',如下所示.它接受任何Icomparable/Iequatable类型的列表,并返回下面显示的包含匹配/不匹配项列表的"compareResult"类.
public partial class Comparers
{
public class compareResult<T>
{
public List<T> unchangedItems;
public List<T> changedItems;
public List<T> leftOrphans;
public List<T> rightOrphans;
}
public static compareResult<T> stepCompare<T>(List<T> leftList, List<T> rightList, bool confirmUniqueIDs = true) where T : IEquatable<T>, IComparable
{
...
Run Code Online (Sandbox Code Playgroud)
我现在尝试传入一个'LicencedCustomer'列表,该列表定义如下,并实现CompareTo和Equals方法来实现IComparable/IEquatable接口.
public class LicencedCustomer : IEquatable<LicencedCustomer>, IComparable<LicencedCustomer>
{
public string LMAA_CODE {get; set;}
...
Run Code Online (Sandbox Code Playgroud)
现在我尝试传递以下两个客户列表:
Comparers.compareResult<LicencedCustomer> result = new Comparers.compareResult<LicencedCustomer>();
result = Comparers.stepCompare(leftList, rightList);
Run Code Online (Sandbox Code Playgroud)
但它说"错误1"类型'MFTests.LicencedCustomer'不能在泛型类型或方法'MF.Comparers.stepCompare(System.Collections.Generic.List,System.Collections.Generic.List)中用作类型参数'T'. ,bool)'.没有从'MFTests.LicencedCustomer'到'System.IComparable'的隐式引用转换......
我以为我已经实现了IComparable,虽然它指的是我不太懂的转换.对不起,我做了很长的解释,尽量保持简短.
对我做错了什么的想法?
泛型方法不包括泛型类型标识符T.
where T : IEquatable<T>, IComparable
Run Code Online (Sandbox Code Playgroud)
应该
where T : IEquatable<T>, IComparable<T>
Run Code Online (Sandbox Code Playgroud)