Interop用户控件中的“继承<基类>”在哪里?</base class>

时间:2010-01-06 03:22:56

标签: vb.net inheritance com-interop

我正在研究Interop UserControl机制,它是“Interop Forms Toolkit”2.0版的一部分。 (这是为了构建一个.Net UserControl,可以作为COM对象发布,以便在VB6表单上使用。)

我使用“VB6 Interop UserControl”模板启动了一个新项目,我看到的是一个类似于以下内容的类定义:

    <ComClass(InteropUserControl.ClassId, InteropUserControl.InterfaceId,       
        InteropUserControl.EventsId)> _
    Public Class InteropUserControl

  + VB6 Interop Code

        'Please enter any new code here, below the Interop code

    End Class

没有任何“继承”声明。但是,如果我查看类浏览器,我可以看到这个类(毫不奇怪)继承自WinForms UserControl类。怎么可能在任何地方都看不到类声明的“Inherits UserControl”部分?

问题634559还显示了一个没有任何“继承UserControl”语句的InteropUserControl类声明。我必须从VB.Net知识中遗漏一些简单的东西。 (我在C#中完成了大部分的.Net工作。)

理解这一点的任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

我相信&lt; ComClass()&gt;充当编译器添加某些接口的信号。

I've found one source for that behavior.

在这种情况下,可能会对Inherits进行类似的重写。

答案 1 :(得分:0)

VB.Net编译器自动添加Inherits UserControl。使用Reflector查看您的课程,看看这个。除此之外,还增加了Implements _InteropUserControl。所以当你写这样的课时:

<ComClass(InteropUserControl.ClassId, InteropUserControl.InterfaceId,
    InteropUserControl.EventsId)> _
Public Class InteropUserControl

    ...

它会在Reflector中看起来像这样:

<DesignerGenerated(), ComClass("a2ee6169-9a0d-4930-b8bb-ee71307c43b3",
    "75ff3d57-6448-40ac-a294-68252180cacd", "2b04895c-43f8-44b3-b187-00556ef53a6a"),
    Guid("a2ee6169-9a0d-4930-b8bb-ee71307c43b3"),
    ClassInterface(ClassInterfaceType.None),
    ComSourceInterfaces("VBControl.InteropUserControl+__InteropUserControl")> _
Public Class InteropUserControl
    Inherits UserControl
    Implements _InteropUserControl

    ...