VB.Net默认表单实例 [英] VB.Net default form instance
问题描述
我已替换(Regex)项目中对default form instances的所有访问,现在我希望确保不再使用默认实例。
看起来默认实例功能can't be disabled(不更改类的ctor)
任何人都知道如何在VB.Net中查找默认表单实例的所有用法(或-使用类名访问非共享成员)
仅供参考:我正在使用带有ReSharper的VS2017
推荐答案
与人们普遍认为的相反,在WinForm应用程序中生成默认实例不是Visual Basic的强制功能。
摘自《Visual Basic语言规范》版本11(已添加强调):
11.6.2默认实例在某些情况下,从公共基类派生的类通常或始终只有一个实例。为 例如,在用户界面中显示的大多数窗口都只有一个 实例随时显示在屏幕上。简化使用的步骤 这些类型的类,VB可以自动生成 类的默认实例,这些类轻松地提供单个 每个类的引用实例。
问题是,我知道没有任何文档告诉您如何启用/禁用它们的创建。众所周知,此功能是应用程序框架的一部分,可以在项目属性页的"应用程序选项卡"中启用/禁用该功能。但是,禁用应用程序框架不会禁用默认实例生成。
如果在创建项目时选择"Windows Forms App"模板,而是选择"Empty Project"模板并继续添加表单,则可以创建一个WinForm项目,其中的"Enable Application Frame"复选框呈灰色且不可选。您还会发现不能使用默认表单实例。由此推断,该功能可以通过"*.vbproj"文件进行配置。
控制项是<MyType>
标记。此属性的可能值为:
- 空-应用程序框架不可用
- 控制台
- WindowsForms-启用应用程序框架
- WindowsFormsWithCustomSubMain-应用程序框架已禁用
- Windows类库
- WebControl-库
因此,如果要将现有项目转换为不支持默认实例的项目,可以编辑"*.vbproj"文件并将<MyType>
属性更改为空。
请注意,这样做还会消除应用程序框架的其他功能,如My.Computer
和My.User
,但您始终可以自己实现这些功能,如How to: Use the My Namespace (C# Programming Guide)中所述。
这篇关于VB.Net默认表单实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!