Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 强制自定义系统类的使用_C#_Visual Studio_Inherited - Fatal编程技术网

C# 强制自定义系统类的使用

C# 强制自定义系统类的使用,c#,visual-studio,inherited,C#,Visual Studio,Inherited,我创建了类MyToolStrip:ToolStrip{}。我的项目已经有大约60个toolstrip实例 是否有一种方法(签名查找/替换除外)可以: 强制所有创建的表单使用MyToolStrip而不是ToolStrip 强制将来使用MyToolStrip而不是ToolStrip(编译器警告足够好,但不是最好的) 我认为既不能将ToolStrip标记为过时,也不能“重写”或隐藏系统类。那么什么是最佳实践呢?谢谢 是否有办法(签名查找/替换除外)强制我创建的所有表单使用MyToolStrip而不是T

我创建了类MyToolStrip:ToolStrip{}。我的项目已经有大约60个toolstrip实例

是否有一种方法(签名查找/替换除外)可以:

  • 强制所有创建的表单使用MyToolStrip而不是ToolStrip
  • 强制将来使用MyToolStrip而不是ToolStrip(编译器警告足够好,但不是最好的)
  • 我认为既不能将ToolStrip标记为过时,也不能“重写”或隐藏系统类。那么什么是最佳实践呢?谢谢

    是否有办法(签名查找/替换除外)强制我创建的所有表单使用
    MyToolStrip
    而不是
    ToolStrip

    我想不出这一点——如果表单使用
    ToolStrip
    控件,则无法“注入”控件。即使您试图使用别名使用巧妙的
    #隐藏标准控件,默认情况下,设计器也会将完整的命名空间添加到控件声明中:

    private System.Windows.Forms.ToolStrip toolStrip1;
    
    有没有办法(除了签名查找/替换)强制将来使用
    MyToolStrip
    而不是
    ToolStrip
    (编译器警告足够好,但不是最好的)

    再说一次,这不是我能想到的。如果您控制了
    ToolStrip
    ,您可以将其标记为
    [过时]
    ,这将导致编译器警告或错误(取决于您希望如何使用它),但由于它是一个框架类,因此您没有这种特权


    < P> iMHO 60个实例不太多,可以通过查找/替换…< /P> <代码>强制MyTooStudio使用而不是ToolStrip < /代码>来更改。您可能需要考虑代码分析规则。太糟糕了,它不依赖oop范式或至少编译器指令,但这已经足够接近了,谢谢!顺便说一句,找到了VS2008集成示例: