C# 用于检查C中潜在铸造问题的工具#

C# 用于检查C中潜在铸造问题的工具#,c#,visual-studio-2010,C#,Visual Studio 2010,我手头有以下情况。在我从事的项目中,我们有一个抽象类A,它有两个后代,A_concrete1和A_concrete2。这两个人已经有一段时间了 现在是添加第三个后代的时候了,A_3。问题是,在现有的代码库中,很多时候您会发现这样的情况: A instance; // ... // assignment of instance // ... if (!(A is A_concrete1)) A_concrete2 = (A_concrete2)A; 所以现在,当A有两个以上的子体时,这段代码

我手头有以下情况。在我从事的项目中,我们有一个抽象类A,它有两个后代,A_concrete1A_concrete2。这两个人已经有一段时间了

现在是添加第三个后代的时候了,A_3。问题是,在现有的代码库中,很多时候您会发现这样的情况:

A instance;
// ...
// assignment of instance
// ...
if (!(A is A_concrete1))
  A_concrete2 = (A_concrete2)A;
所以现在,当A有两个以上的子体时,这段代码显然已被破坏,并将在运行时失败

我的问题是:如何自动定位所有这些情况,以便修复它们?最好的方法/工具是什么?我尝试使用Resharper,但它没有提供任何用于铸造分析的功能。所以我很高兴听到一些关于这方面的建议和建议


提前感谢

最好的方法是在A中有方法(可能在子类中被重写),并且对于给定A的任何代码,A只用于调用A的方法,而不将其强制转换到任何一个子类。这样你就不必再这样做了


可能在文件中查找(文件夹中的工具栏按钮具有双筒望远镜)是查找
(a_concrete 2)
的最佳方式,
是a_concrete 1
。但不要只是进入那里,用一堆ifs替换if-更改a,使其成为更合适的基类。

好的,Resharper将向我展示a_混凝土1和2的所有用法,因此不需要纯文本搜索。尽管如此,我还是希望看到一个工具,指出这些可能不好的浇铸。当然,我知道浇铸到混凝土类在大多数情况下是不好的,所以我计划解决一些问题,但为此我需要知道人们对这些对象做什么样的操作,以及他们在哪里做这些操作。