これを行う必要があるのは「デザインの匂い」かもしれませんが、別の質問について考えてみると、これの逆を実装する最もクリーンな方法は何だろうと思っていました。
foreach(ISomethingable somethingableClass in collectionOfRelatedObjects)
{
somethingableClass.DoSomething();
}
つまり、特定のインターフェイスを実装していないすべてのオブジェクトを取得/反復する方法は?
おそらく、最高レベルにアップキャストすることから始める必要があります。
foreach(ParentType parentType in collectionOfRelatedObjects)
{
// TODO: iterate through everything which *doesn't* implement ISomethingable
}
TODO を解決することで答えます: 最もクリーン/シンプルかつ/または最も効率的な方法で