C#阻止类的使用,例如WebBrowser 我试图阻止其他程序员使用一个特定的类(作为一个最佳实践,并考虑其他的选择)。

C#阻止类的使用,例如WebBrowser 我试图阻止其他程序员使用一个特定的类(作为一个最佳实践,并考虑其他的选择)。,c#,C#,更具体地说,我试图强制使用WebClient或HttpRequest,而不是WebBrowser,因为与WebBrowser的使用相关的错误很多,这些错误可能会导致线程或消息循环打开,并使应用程序挂起,因此它不会结束/退出 WebBrowser的重量更重 我知道通过像这样锁定是可能的 lock (typeof(System.Windows.Forms.WebBrowser)) { } 但这有很多缺点 在C#项目、文件或解决方案中是否可能阻止使用WebBrowser之类的特定类 使用pragma

更具体地说,我试图强制使用WebClient或HttpRequest,而不是WebBrowser,因为与WebBrowser的使用相关的错误很多,这些错误可能会导致线程或消息循环打开,并使应用程序挂起,因此它不会结束/退出

WebBrowser的重量更重

我知道通过像这样锁定是可能的

lock (typeof(System.Windows.Forms.WebBrowser))
{
}
但这有很多缺点

在C#项目、文件或解决方案中是否可能阻止使用WebBrowser之类的特定类

使用pragma发出警告会更好

#warning Please avoid using WebBrowser, consider WebClient

阻止命名空间的解决方案是一种选择,但只有作为最后的手段

您应该考虑创建使用WebBubor类时会发出警告的内容。

< P>您应该考虑创建WebBubor类时使用的警告。

< P>仅使用类型签入方法,您正在通过引用:

 if(someobject is (System.Windows.Forms.WebBrowser))
 { 
   throw new ArgumentException("Don't use web browser here naughty programmer");
 }
对于lock语句,我建议阅读(请不要以您认为的方式使用):


只需使用正在传递引用的类型签入方法:

 if(someobject is (System.Windows.Forms.WebBrowser))
 { 
   throw new ArgumentException("Don't use web browser here naughty programmer");
 }
对于lock语句,我建议阅读(请不要以您认为的方式使用):


我知道可以通过锁定来实现它,比如…
-我不认为这意味着你认为它的意思。“我知道可以通过锁定来实现它,比如”-不,这不符合你的预期。Marshall777可能是个天才,我正在调查这是否需要手动执行“运行代码分析…”它似乎确实需要手动运行编码规则,因此它不会在生成时触发,但除此之外,这正是我所寻找的。@Alexandrulace:锁定类型变量(正如您在代码中所做的那样)不会阻止任何人创建新实例。这段代码执行时不会停止:
lock(typeof(System.Object)){var o=new System.Object();}
我知道通过像…一样锁定它是可能的。
-我不认为这意味着你认为它意味着什么。“我知道通过像这样锁定它是可能的”-不,这不符合你的期望。Marshall777可能是个天才,我正在调查这是否需要手动执行“运行代码分析…”它似乎确实需要手动运行编码规则,因此它不会在生成时触发,但除此之外,这正是我所寻找的。@Alexandrulace:锁定类型变量(正如您在代码中所做的那样)不会阻止任何人创建新实例。此代码执行时不停止:
lock(typeof(System.Object)){var o=new System.Object();}