我正在通过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或其他东西正在显式地
价值
为什么会这样?实际上我
我不想
一个默认属性及其存在掩盖了一个“刚刚起作用”的编码错误,基本上是偶然的。