VB.NET会自动生成ComClass属性和GUI吗?

VB.NET会自动生成ComClass属性和GUI吗?,vb.net,com,Vb.net,Com,我遇到过一些VB.NET代码,这些代码显式创建了三个GUID常量,并在类的ComClass属性中使用它们。我在过去编写过COM感知类,只需选中项目选项中的“使COM可见”和“注册COM互操作”选项。这个显式的代码是完全不必要的,还是做了一些超出这两个选项范围的事情?下面是一个片段: <ComClass(MenuHandler.ClassId, MenuHandler.InterfaceId, MenuHandler.EventsId)> _ Public Class MenuHand

我遇到过一些VB.NET代码,这些代码显式创建了三个GUID常量,并在类的ComClass属性中使用它们。我在过去编写过COM感知类,只需选中项目选项中的“使COM可见”和“注册COM互操作”选项。这个显式的代码是完全不必要的,还是做了一些超出这两个选项范围的事情?下面是一个片段:

<ComClass(MenuHandler.ClassId, MenuHandler.InterfaceId, MenuHandler.EventsId)> _
Public Class MenuHandler
    Public Const ClassId As String = "A2204623-A902-44d4-B524-FDFFCD176E53"
    Public Const InterfaceId As String = "3449CA8B-16DF-4a61-8BAB-DFF27AE70F5E"
    Public Const EventsId As String = "06C156DD-0ABA-437e-9EE0-C1CE2CA34033"
End Class
_
公共类MenuHandler
Public Const ClassId为String=“A2204623-A902-44d4-B524-FDFFCD176E53”
Public Const InterfaceId As String=“3449CA8B-16DF-4a61-8BAB-DFF27AE70F5E”
Public Const EventsId As String=“06C156DD-0ABA-437e-9EE0-C1CE2CA34033”
末级

通过显式地将属性放在要公开的类和枚举上,可以防止不应公开的帮助器类、内部工具或内部类等内容被公开。这是微软推荐的方法……当他们推荐某样东西时,通常意味着如果你不这样做,你的程序将来可能会崩溃。:)


选中“使COM可见”和“注册COM互操作”是使COM可见对象的简单方法,但不推荐使用。这将增加每个可见类的开销,即使是您可能不想要的类。

ComClass属性特定于Visual Basic,旨在简化.Net代码中COM对象的创建。当编译器看到这个属性时,它会在后台完成一些必须在C#中手动完成的繁琐工作。总之,它是创建COM对象的Visual Basic代码的快捷方式

这里有一篇很好的文章,介绍了在C#中做同样的事情所带来的好处:

VB.NET会自动生成ComClass属性和GUI吗

是的,如果使用VB.NET COMClass模板创建类,则会自动生成COMClassAttribute和那些GUI

“使用COM类模板创建COM对象”部分