C#的Downcast检测工具

时间:2015-10-23 19:31:18

标签: c# downcast

使用传统的中等规模项目。我已经使用Decorator模式实现了一个功能,除了它打破使用从接口到实现的向下转换的糟糕代码之外,它工作得很好。 问题是:是否有任何工具或编译器标志或其他东西,可以帮助我找到使用向下转换的所有情况。我可以找到所有类型的所有案例。

我有一些代码来阐述我的问题:

interface IComponent {}
class Concrete : IComponent {}
...
IComponent obj = new Concrete()

现在

interface IComponent {}
class Concrete : IComponent {}
class Decorator : IComponent
{
   private IComponent _imp = new Concrete()
}
...
IComponent obj = new Decorator()

并且在将obj强制转换为混凝土时会出现错误的代码,例如(Concrete)obj。

2 个答案:

答案 0 :(得分:5)

使用Concrete暂时标记ObsoleteAttribute。然后检查Visual Studio中的错误列表,以获取有关使用过时代码的警告。双击这些将转到使用Concrete的代码。

答案 1 :(得分:0)

如果您使用的是Visual Studio 2015,也可以编写自定义代码分析器。这将为您提供令人难以置信的代码验证规则控制。尽管如此,它有点复杂。详情请见https://msdn.microsoft.com/en-us/magazine/mt573715.aspx