我有一些继承来的代码,这些代码倾向于将对象作为接口(IFoo)传递,然后在代码的任意位置,将它们突然转换为这些接口的具体实现(例如,MyConcreteFoo)。
以下是一个愚蠢的例子:
public bool IsThisFooScaredOfMonkeys(IFoo foo)
{
if (foo is MyConcreteFoo)
{
return ((MyConcreteFoo)foo).BelievesMonkeysAreEvil;
}
return false;
}
我想要做的是编写一个NDepend CQL查询,以捕获这些类型转换并按方法、类型或其他任何方式计数。这样我就知道从哪里开始集中精力来摆脱这种愚蠢行为,而不是让我的团队在代码中进行无目的的寻找... 是否有人知道如何做到这一点?我猜不能(需要这种特定功能的人不会太多),但我想先在这里问问... :-)
当然,任何关于使类型转换查找更快的想法也将同样受到欣赏。