我有一些继承的代码倾向于将对象作为接口传递(例如,IFoo),然后在代码中的任意位置,自发地将它们转换为这些接口的具体实现(例如,MyConcreteFoo)。
这是一个愚蠢的例子:
public bool IsThisFooScaredOfMonkeys(IFoo foo)
{
if (foo is MyConcreteFoo)
{
return ((MyConcreteFoo)foo).BelievesMonkeysAreEvil;
}
return false;
}
我想做的是编写一个 NDepend CQL 查询来获取这些类型的强制转换,并给我每个方法、每个类型或任何东西的计数。只是为了让我知道我可以从哪里开始集中精力摆脱这种特殊的愚蠢品牌,而不是让我的团队在代码中钻研随机寻找演员表......
有谁知道是否有办法做到这一点?我猜不是(不可能有太多人需要那个特定功能)但我想我会先在这里问...... :-)
当然,任何其他关于如何加快施法狩猎速度的想法都将受到同样的赞赏。