0

在运行时创建对象后,我试图在类中创建新变量。问题是我事先不知道变量名称或值,所以我必须在运行时创建新变量。

例如 -

Public Class Test
    Public Sub Test()
    End Sub
    Public Function Fval(ByVal Field As Object) As Object
        Return Field(1)
    End Function
End Class

''Creating the object of Test class
Public Class ExecTest
    Public Sub Main(ByVal args() As String) 
        Dim obj as New Test()
        Dim des As ScriptControlClass = New ScriptControlClass()
        des.Language = "VBScript"
        des.AddObject("TS", obj, True)
        Dim xx as Object = des.Eval("Fval(ABC)")
    End Sub
End Class

编辑:这是对我的代码的更详细的解释。如果您在 Eval 函数中观察到我试图评估Fval(abc). 现在对象数组abc没有在 Test 类中声明,因为事先不知道它的存在。我想要做的是创建一个abc长度为 2 的对象数组并用一些值填充它,当Fval(abc)被调用时,索引 1 的值应该是Eval函数的返回值。

4

2 回答 2

3

创建类型后,您不能向 .NET 中的类型添加任何内容。类型确实是固定的。
您可以在运行时创建一个继承自 Test 的新类型,但是创建和访问该类型的成员都需要大量工作。

一种更有用的方法是Dictionary(Of T, V)Test类中创建 a 并将值存储在该字典中,并将变量的名称作为字典中的键。

于 2011-09-29T05:49:47.520 回答
0

嗯,在我看来这没有意义。因为我不知道背景。但我会尝试将一个 List 对象添加到您的 Test 类中。在此列表中,您可以在运行时添加您想要的任何内容。

我只知道 C# 中的代码,所以你需要翻译它:

List<Object> List = new List<Object>();

那么你可以使用:

List.add(variable)

我希望这会有所帮助。

于 2011-09-29T05:59:16.237 回答