我为这个模糊的问题道歉,但我不确定如何继续。
我需要的东西就像一个具有各种字段和属性的类对象,用于存储数据。
但是,由于并非所有字段/属性在编译时都是已知的,因此我还需要能够在运行时添加和使用新的字段/属性。
这些对象稍后将按列表排列,按这些字段/属性中的值排序并绑定到WPF控件。
现在我只使用它:具有各种属性的类对象,但我开始遇到问题,我需要添加更多字段/属性。
在vb.net中有什么我可以用来实现这个目的吗?
编辑:
好的,我试着说明一下。
目前我有这样的事情。
让我们说我已经定义了像这样的对象
Public Class DataEntry
Public Property Name As String
Public Property Type As String
Public Property Msc As Integer
End Class
如果我知道我将在开始时拥有的所有属性,那就行得很好。如果我突然需要添加另一个属性,我会遇到问题:
Public Class DataEntry
Public Property Name As String
Public Property Type As String
Public Property Msc As Integer
Public Property AdditionalDescription As String
End Class
当然,我可以重新编译整个事情,但由于我不知道最终需要的所有可能的属性,我想知道,也许有一种方法可以从运行时实现这一点? / p>
或者我应该使用复杂的数组堆而不是自定义对象?
答案 0 :(得分:5)
在运行时期间无法向类中添加新属性。
如果您不希望提前向类中添加属性而不使用,那么您可以使用dictionary来存储您在运行时之前不知道的“属性”
Public Property RunTimeProperties As New Dictionary(Of String, Object)
包含“对象”类型值的字典可以存储任何内容。字符串,数组,列表等。
RunTimeProperties.Add("Length", 100)
RunTimeProperties.Add("Height", 200)
RunTimeProperties.Add("MiddleName", "Rupert")
RunTimeProperties.Add("SiblingsNames", New String() {"John", "Sarah", "Michael"})
您可以使用TryGetValue方法从字典中获取值。
Dim value As Object
If RunTimeProperties.TryGetValue("Length", value) Then
' Length was found in the dictionary
Else
' Length was not found in the dictionary
End If