Вернуть все объекты общего списка, которые реализуют интерфейс - PullRequest
1 голос
/ 12 января 2011

Я пытаюсь вернуть все объекты Animal, которые реализуют IHerd.

Может ли кто-нибудь указать мне направление?

public interface IHerd {
        void Herd();
    }

    public class Dog : Animals, IHerd {
        public void Herd() {
            // Swim method
        }
    }

    public class Animals {
        public void Eat() { }
        public void Poop() { }
    }

    public class Farm {
        public List<Animals> FarmAnimals = new List<Animals>();

        public Animals GetHerders() {
            return FarmAnimals.OfType<IHerd>();
        }
    }

Ответы [ 3 ]

2 голосов
/ 12 января 2011
FarmAnimals.Where(x => x is IHerd)
2 голосов
/ 12 января 2011
return Animals.OfType<IHerd>().OfType<Animals>()
1 голос
/ 12 января 2011
return Animals.OfType<IHerd>().Cast<Animals>().ToList();

Вам также нужно изменить тип возврата, чтобы он соответствовал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...