Надеюсь, я правильно это описал.У меня есть «универсальный метод», который выглядит следующим образом.Он принимает список любого типа 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
{
...
Теперь я пытаюсь передать список 'LicencedCustomer', которыйопределено, как показано ниже, и реализует методы CompareTo и Equals для реализации интерфейсов IComparable / IEquatable.
public class LicencedCustomer : IEquatable<LicencedCustomer>, IComparable<LicencedCustomer>
{
public string LMAA_CODE {get; set;}
...
Теперь я попытаюсь передать два списка клиентов в следующем порядке:
Comparers.compareResult<LicencedCustomer> result = new Comparers.compareResult<LicencedCustomer>();
result = Comparers.stepCompare(leftList, rightList);
Ноон говорит: «Ошибка 1 Тип« MFTests.LicencedCustomer »нельзя использовать в качестве параметра типа« T »в универсальном типе или методе« MF.Comparers.stepCompare (System.Collections.Generic.List, System.Collections.Generic.List,bool) '. Не существует неявного преобразования ссылок из' MFTests.LicencedCustomer 'в' System.IComparable '...
Я думал, что реализовал IComparable, хотя это относится к преобразованию, которое я не совсем понимаю.Извините за длинное объяснение, я старался сделать его как можно более кратким.
Есть мысли о том, что я делаю неправильно?