使用传统的中等规模项目。我已经使用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。
答案 0 :(得分:5)
使用Concrete
暂时标记ObsoleteAttribute
。然后检查Visual Studio中的错误列表,以获取有关使用过时代码的警告。双击这些将转到使用Concrete
的代码。
答案 1 :(得分:0)
如果您使用的是Visual Studio 2015,也可以编写自定义代码分析器。这将为您提供令人难以置信的代码验证规则控制。尽管如此,它有点复杂。详情请见https://msdn.microsoft.com/en-us/magazine/mt573715.aspx