也许这样做的需要是一种“设计气味”,但考虑到另一个问题,我想知道实现与此相反的最干净的方法是什么:
foreach(ISomethingable somethingableClass in collectionOfRelatedObjects)
{
somethingableClass.DoSomething();
}
即如何获取/遍历所有未实现特定接口的对象?
大概你需要从向上转换到最高级别开始:
foreach(ParentType parentType in collectionOfRelatedObjects)
{
// TODO: iterate through everything which *doesn't* implement ISomethingable
}
通过解决 TODO 来回答:以最干净/最简单和/或最有效的方式