У меня есть несколько различных типов все с общим свойством:C# Метод взять список типов с тем же свойством
public class A {
public int SomeCommonProperty { get; set; }
/*
* some other stuff
*/
}
public class B {
public int SomeCommonProperty { get; set; }
/*
* some other stuff
*/
}
Я хочу иметь метод, который принимает список любого из этих объектов с этим свойством так что я могу перебирать список и сравните это свойство с другим параметром как:
public static List<T> MethodToTakeListOfAboveTypes<T>(this List<T> destinationList, List<T> sourceList, string someProp)
{
if (sourceList != null && sourceList.Exists(tab => tab.SomeCommonProperty == someProp))
{
destinationList = sourceList.Where(tab => tab.SomeCommonProperty == someProp).ToList();
}
return destinationList;
}
Приведенный выше код не работает, как T не имеет определение «SomeCommonProperty», который имеет смысл. Я хочу просто передать более общий объект с этим свойством, так что мне не нужно создавать этот же метод для каждого типа. Я просто не могу получить синтаксис правильно. Имеет ли это смысл?
Я знаю, что я должен поместить поле SomeCommonProperty в базовый класс и наследовать, но по какой-то причине это не работает.
Наследование специально предназначено для решения этой проблемы. Почему вы думаете, что это «похоже, не работает»? –