オブジェクトをインターフェイス (IFoo など) として渡し、コード内の任意の場所でそれらをそれらのインターフェイスの具体的な実装 (MyConcreteFoo など) に自発的にキャストする傾向がある継承コードがあります。
これはばかげた例です:
public bool IsThisFooScaredOfMonkeys(IFoo foo)
{
if (foo is MyConcreteFoo)
{
return ((MyConcreteFoo)foo).BelievesMonkeysAreEvil;
}
return false;
}
私がやりたいのは、NDepend CQL クエリを記述して、これらの種類のキャストを取得し、メソッドごと、タイプごと、または実際に何かをカウントすることです。キャストを無作為に探してコードを調べさせるのではなく、この特定のブランドの愚かさを取り除くためにどこから努力を集中できるかを知っているだけです...
それを行う方法があるかどうか誰かが知っていますか?私はそうではないと思います(その特定の機能を必要とする人が多すぎることはあり得ません)が、最初にここで質問することにしました... :-)
もちろん、キャストハンティングを高速化する方法に関する他のアイデアも同様に高く評価されます.