C# 强制自定义系统类的使用
我创建了类MyToolStrip:ToolStrip{}。我的项目已经有大约60个toolstrip实例 是否有一种方法(签名查找/替换除外)可以:C# 强制自定义系统类的使用,c#,visual-studio,inherited,C#,Visual Studio,Inherited,我创建了类MyToolStrip:ToolStrip{}。我的项目已经有大约60个toolstrip实例 是否有一种方法(签名查找/替换除外)可以: 强制所有创建的表单使用MyToolStrip而不是ToolStrip 强制将来使用MyToolStrip而不是ToolStrip(编译器警告足够好,但不是最好的) 我认为既不能将ToolStrip标记为过时,也不能“重写”或隐藏系统类。那么什么是最佳实践呢?谢谢 是否有办法(签名查找/替换除外)强制我创建的所有表单使用MyToolStrip而不是T
MyToolStrip
而不是ToolStrip
我想不出这一点——如果表单使用ToolStrip
控件,则无法“注入”控件。即使您试图使用别名使用巧妙的#隐藏标准控件,默认情况下,设计器也会将完整的命名空间添加到控件声明中:
private System.Windows.Forms.ToolStrip toolStrip1;
有没有办法(除了签名查找/替换)强制将来使用MyToolStrip
而不是ToolStrip
(编译器警告足够好,但不是最好的)
再说一次,这不是我能想到的。如果您控制了ToolStrip
,您可以将其标记为[过时]
,这将导致编译器警告或错误(取决于您希望如何使用它),但由于它是一个框架类,因此您没有这种特权
< P> iMHO 60个实例不太多,可以通过查找/替换…< /P> <代码>强制MyTooStudio使用而不是ToolStrip < /代码>来更改。您可能需要考虑代码分析规则。太糟糕了,它不依赖oop范式或至少编译器指令,但这已经足够接近了,谢谢!顺便说一句,找到了VS2008集成示例: