扩展COM Interop的运算符CType

时间:2015-03-19 11:42:38

标签: vb.net vbscript com vb6

我的代码遇到了一个奇怪的问题。我有一个.NET代码,我需要提供COM互操作性。我已经完成了所需的工作,所以我的所有属性和方法都在VB脚本中作为COM对象公开。

但是我需要做一件小事。让我通过发布代码片段来解释

Option Strict Off
Option Explicit On
Class X

Public text as string
Public index as integer

Public Shared Widening Operator CType(ByVal i As X) As String
        Return i.Text
End Operator

End Class

在这段代码中,我有属性来设置/获取类的Text和Index成员。但是在我的脚本中(当.NET不在图片中时很久就写了),有一个名为“Display”的函数,它接受一个字符串并将其显示在文本框中。 我甚至尝试过Option Explicit Off以确保隐式转换有效。

此显示需要使用以下方法。

显示X(默认情况下应为X.Text并在屏幕上显示)

如果我在另一个.NET项目中使用dll但是抛出错误“没有这样的属性或方法”,那么这一切都很有效

任何帮助将不胜感激。如果您还需要任何其他信息,请随时询问。这对我们来说正在成为一个障碍。

1 个答案:

答案 0 :(得分:0)

对于COM,您应该使用<DispId(0)>属性声明默认属性。 DISPID 0 is the default or value member。或者,如果.Text必须具有非零DISPID,则可能有一个DISPID为0的单独方法或属性不属于您正在实现的任何接口。