Может быть, необходимость сделать это - «запах дизайна», но, подумав о другом вопросе, мне было интересно, какой самый чистый способ реализовать обратное из этого:
foreach(ISomethingable somethingableClass in collectionOfRelatedObjects)
{
somethingableClass.DoSomething();
}
т.е. Как получить / перебрать все объекты, которые не реализуют определенный интерфейс?
Предположительно, вам нужно начать с апгрейда до самого высокого уровня:
foreach(ParentType parentType in collectionOfRelatedObjects)
{
// TODO: iterate through everything which *doesn't* implement ISomethingable
}
Ответ, решив ТОДО: самым чистым / простым и / или наиболее эффективным способом