代码之家  ›  专栏  ›  技术社区  ›  StayOnTarget

是否有默认属性?

  •  0
  • StayOnTarget  · 技术社区  · 6 年前

    我正在通过COM互操作将C#类导出到VB6。 它似乎有一个默认的COM属性,而我从来没有设置过!

    C类看起来像:

    [ComVisible(true), ClassInterface(ClassInterfaceType.AutoDual)]
    class Foo
    {
         public int I { get; set; }
         public bool B { get; set; }
         public int Value { get; set; }  // <--- the culprit
         public string S { get; set; }
    }
    

    (我知道 why should I not use autodual

    财产 Value 是VB6中的默认值。在对象浏览器中是这样显示的。但请注意,我没有设置 DispId attribute

    另外,在OLEView中,您可以在 IDL TLB attribute [id(00000000), propget] . 这个 is equivalent to DISPID_VALUE . 因此,出于某种原因,编译器或TLBEXP或其他东西正在显式地 价值

    为什么会这样?实际上我 我不想 一个默认属性及其存在掩盖了一个“刚刚起作用”的编码错误,基本上是偶然的。

    0 回复  |  直到 6 年前