Bri*_*per 5 vb.net vb6 vb6-migration
我正在将一些VB6代码转换为VB.Net.由于我的VB6安装似乎损坏无法修复,我使用记事本阅读原始源代码,可以看到文件顶部附近: -
Attribute VB_Name = "clsBulge"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Description = "Some text here"
Attribute VB_Ext_KEY = "SavedWithClassBuilder" ,"Yes"
Attribute VB_Ext_KEY = "Member0" ,"collBulges"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Run Code Online (Sandbox Code Playgroud)
在作品中: -
Public Property Let Amplitude(ByVal vData As Double)
Attribute Amplitude.VB_Description = "Some text here"
mvaInternal = vData
End Property
Run Code Online (Sandbox Code Playgroud)
问题是,转换为VB.Net时,我是否要担心这个问题?如果是这样,我在哪里可以找出所有这些东西的含义?
我在VBA上下文中写了一些关于VB属性的内容,但我可以总结一下这里的内容.
Run Code Online (Sandbox Code Playgroud)Attribute VB_Name = "clsBulge"
非常自我解释,这是班级的名称.要创建它的新实例,您必须调用Dim foo = New clsBulge.
Run Code Online (Sandbox Code Playgroud)Attribute VB_GlobalNameSpace = False
这个有点有趣,通过将其设置为true,将创建一个全局默认实例.当应用程序启动时,将自动创建该类的实例,并通过对其公共成员的简单名称访问来访问该实例.这有点难以解释,但如果你看一下对象浏览器中的内置VBA函数,你会很快看到它如何让你"快捷""命名空间".
移植时你不必担心这个,除非它被设置为True.任何设置为True的类都会让你头疼,因为这个"静态"类的客户端不必通过其显式名称来调用它,但是在将代码移植到.Net之后必须这样做.
Run Code Online (Sandbox Code Playgroud)Attribute VB_PredeclaredId = False
与...有关VB_GlobalNameSpace,但语义略有不同.它大致相当于.Net中的Static类.只有......不,因为您仍然可以创建该类的其他实例.它也在上面的链接中描述为:
如果类模块的
VB_PredeclaredId属性或VB_GlobalNamespace属性值为"True",则该类模块具有默认实例变量.使用模块范围创建此默认实例变量,就像在包含类的名称的元素中声明一样.如果此类模块的
VB_PredeclaredId属性值为"True",则为此默认实例变量指定类的名称作为其名称.此命名变量无效为Set赋值的目标.否则,如果此类模块的VB_PredeclaredId属性没有值"True",则此默认实例变量没有可公开表示的名称.如果此类模块的
VB_GlobalNamespace属性值为"True",则类模块被视为全局类模块,允许对其默认实例的成员进行简单的名称访问...请注意,如果
VB_PredeclaredId和VB_GlobalNamespace属性都具有值"True",则两个属性的语义共享相同的默认实例变量.
Run Code Online (Sandbox Code Playgroud)Attribute VB_Creatable = True
这个也很有趣.它与范围规则有关.从本质上讲,如果设置为True,则可以从任何地方调用构造函数.它是公共的,可以在任何地方创建.但如果设置为False,则相当于拥有内部ctor.
Run Code Online (Sandbox Code Playgroud)Attribute VB_Exposed = False
只需控制模块的范围.真是公开,假是内.它与结合使用VB_Creatable来创建范围行为矩阵.
Run Code Online (Sandbox Code Playgroud)Attribute VB_Description = "Some text here"
大致相当于<Summary>文档评论.此文本将显示在VB6(和VBA)对象浏览器中.如果我没记错的话,许多其他支持COM的语言都会使用它来达到同样的目的.实际上,您可以使用ComponentModel.Description属性为COM公开的.Net库生成此确切行为.如果您需要您的端口是COM可见,您将需要使用它,以便您的客户端保留文档.
Run Code Online (Sandbox Code Playgroud)Attribute VB_Ext_KEY = "SavedWithClassBuilder" ,"Yes" Attribute VB_Ext_KEY = "Member0" ,"collBulges" Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
这些是IDE加载项使用的自定义属性.我不能具体说出这些做了什么,但它们不太可能需要保存.
| 归档时间: |
|
| 查看次数: |
2393 次 |
| 最近记录: |