【发布时间】:2015-05-22 12:18:35
【问题描述】:
我的代码有一个奇怪的问题。我有一个 .NET 代码,我需要将其用于 COM 互操作性。我已经完成了必要的工作,因此我的所有属性和方法都在 VB 脚本中作为 COM 对象公开。
但是我需要做一件小事。让我通过发布代码的sn-p来解释
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 以确保隐式转换有效。
这个Display需要使用如下方法。
显示 X(这应该默认为 X.Text 并显示在屏幕上)
如果我在另一个 .NET 项目中使用 dll 但会抛出错误“没有这样的属性或方法”,那么所有这些都可以正常工作
任何帮助将不胜感激。如果您还需要任何其他信息,请随时询问。这对我们来说是一件大事。
【问题讨论】:
-
转换运算符是VB.NET语言的一个特性,只有编译器知道,也只有编译器知道什么时候需要调用。它不能在除此之外的任何运行时环境中工作,当然不能在脚本语言中工作。预期的用途对我来说非常不清楚,但听起来你需要添加一个显式的 Display() 方法或属性。