在VB.NET中运行时创建类的实例对象的变量

时间:2011-09-29 05:34:25

标签: .net vb.net oop .net-2.0 system.reflection

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

例如 -

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类中声明,因为它的存在事先是未知的。我想要做的是创建一个长度为2的对象数组abc并用一些值填充它,当调用Fval(abc)时,那么索引1的值应该是{{1}的返回值功能。

2 个答案:

答案 0 :(得分:3)

创建类型后,无法在.NET中向类型添加任何内容。一种类型确实是固定的 您可以在运行时创建一个继承自Test的新类型,但这对于创建和访问该类型的成员来说都是很多工作。

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

答案 1 :(得分:0)

嗯,我觉得没有意义。因为我不知道背景。 但我会尝试将List对象添加到您的Test类。 在此列表中,您可以在运行时添加所需的内容。

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

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

然后你可以使用:

List.add(variable)

我希望这会有所帮助。