У меня здесь двойная проблема. Мне нужно отсортировать список <>, который я знаю, содержит объекты производного класса для класса, который был объявлен как содержащий список изначально. И, мне нужно отсортировать по возвращаемому значению из метода в этом производном классе, который принимает параметр. Имейте в виду, что я уже знаю, что List содержит объекты всех типов производного класса.Как отсортировать список <>, содержащий объекты производного класса, методом производного класса
Я создал образец кода здесь, чтобы продемонстрировать этот вопрос, поскольку реальный код нельзя публиковать публично. Обратите внимание: я не контролирую базовые условия здесь (то есть тот факт, что объявленное содержимое коллекции List List - это родительский класс и содержит объекты производного класса, который содержит метод, который принимает аргумент и возвращает значения, которые Мне нужно отсортировать коллекцию). Поэтому я сомневаюсь, что смогу использовать любое предложение, требующее изменений там. Мне кажется, что мне нужно указать (cast?) То, что действительно находится в списке, чтобы я мог получить доступ к методу, определенному там. Но я уверен в других мыслях. В противном случае у меня останется традиционный пузырь. Благодарю.
public class Component
{
public int X;
public int Y;
}
public class ComponentList : List<Component>
{
// Other members that deal with Components, generically
}
public class Fence : Component
{
public int Distance(int FromX, int FromY)
{
int returnValue = 0;
// Caluclate distance...
return returnValue;
}
}
public class Yard : Component
{
// Yada yada yada
}
public class MyCode
{
public List<Component> MyFences;
public MyCode(List<Component> Fences, int FromX, int FromY)
{
// Sort the fences by their distance from specified X,Y
Fences.Sort((A as Fence, B as Fence) => A.Distance(FromX, FromY).CompareTo(B.Distance(FromX, FromY)));
// Or
List<Fence> sortedFences = MyFences.OrderBy(A => A.Distance(FromX, FromY)).ToList();
// Or ???
}
}
Что не так с литьем? Или вы просто не знаете синтаксис листинга - https://msdn.microsoft.com/en-us/library/ms173105.aspx)? –
Что происходит, когда 'Fences' действительно содержит объект, который не является забором? – Rob