Как определить, содержит ли коллекция экземпляр определенного типа? - PullRequest
7 голосов
/ 22 марта 2010

Предположим, я создаю коллекцию как

Collection<IMyType> coll;

Тогда у меня есть много реализаций IMyTypem, как, T1, T2, T3 ...

Тогда я хочу знать, содержит ли коллекция coll экземпляр типа T1. Поэтому я хочу написать метод, как

public bool ContainType( <T>){...}

здесь параметр должен быть типом класса, а не экземпляром класса. Как написать код для такого рода проблемы?

1 Ответ

9 голосов
/ 22 марта 2010

Вы можете сделать:

 public bool ContainsType(this IEnumerable collection, Type type)
 {
      return collection.Any(i => i.GetType() == type);
 }

И затем назвать его следующим образом:

 bool hasType = coll.ContainsType(typeof(T1));

Если вы хотите увидеть, содержит ли коллекция тип, который можно преобразовать в указанный типвы можете сделать:

bool hasType = coll.OfType<T1>().Any();

Это отличается, однако, так как будет возвращать true, если coll также содержит какие-либо подклассы T1.

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