也许需要做的是“设计气味”,但是考虑到另一个问题,我想知道实现此逆的最干净的方法是什么:

foreach(ISomethingable somethingableClass in collectionOfRelatedObjects)
{
  somethingableClass.DoSomething();
}


即如何获取/迭代所有未实现特定接口的对象?

大概您需要从上到最高级别开始:

foreach(ParentType parentType in collectionOfRelatedObjects)
{
  // TODO: iterate through everything which *doesn't* implement ISomethingable
}


通过解决TODO来回答:以最干净/最简单和/或最有效的方式

最佳答案

这应该可以解决问题:

collectionOfRelatedObjects.Where(o => !(o is ISomethingable))

10-08 16:19