在运行时定义/声明对象 VB.Net

Define / Declare an Object at Runtime VB.Net

我使用对象来存储信息。问题是,在编译我的应用程序时,我不知道必须存储哪些信息。例如,用户创建信息颜色并在其中存储红色,我想创建一个对象:

  Public Class Information_Object
    Public Property general As Integer
    Public Property date As DateTime
    Public Property color As String = "red"
End Class

有没有办法在运行时定义对象?

您不能在 运行 时声明 object/class,但您可以创建一个通用对象并在 运行 时重新调整它的用途。例如,您可能会声明一个包含各种变量的对象,其中包括描述应如何使用该对象的变量。

这预先假定您可以定义对象在加载值后如何被消耗。

所以,这样的事情可能会有所帮助:

Public ENUM Consume_As
   Colour
   Number
   Datetime
... and so on. Anything you like
End Enum

Public Class My_Dynamic_Object
  '
  '... You will have to create your GET/SET lines
'
'This is what tells your sstem how to consume data held in this class
  Public _comsume_as AS Consume_As

'Here is where you can store your data
'This can be anything you like
'a colour, dataset, another custom class ...
  Public Class_Variable_1 AS Object

End Class

现在您可以创建一个 My_Dynamic_Object 的字典,其中包含您在 运行 时创建的任意数量的条目。 每个 My_Dynamic_Object 都可以包含对 [ENUM Consume_AS] 的引用,以确定应如何处理 My_Dymanic_Object,以及 Class_Variable_1.

中您喜欢的任何内容

您将需要编写必要的代码来移交 My_Dynamic_Object。Class_Variable_1 以进行必要的处理。

笨重??也许吧,但它可能会满足您的需求。

我会用字典。

    Dim dObjects As New Dictionary(Of String, Object)

    dObjects.Add("First Object", New TextBox With {.Text = "Textbox"})
    dObjects.Add("Second Object", 34533)
    dObjects.Add("Color", New Color = Color.Red)
    dObjects.Add("Date", Now())
    dObjects.Add("Whatever string...", "whatever object you want...")


    For Each k As String In dObjects.Keys
        Debug.Print(dObjects(k).GetType.ToString)
    Next