我不确定我是否正确地提出了这个问题,因为我还是有点新鲜......
但是我正在努力学习如何做(如果可能的话)是创建一个带有用户数据(名称,地址,电话等)的可序列化类对象。对于我的项目,我将此用户数据称为用户参数。随着这份名单将继续增长。例如,fav song,fav color等。
所以我想根据用户可用的'参数'动态创建对象。有些用户只有一个,有些用户会有更多用户。用户数据/参数将与用户GUID和标识参数的FK一起存储在单独的表中。理想情况下,我只需要在此表中添加一条新记录,后面的代码就可以了。
否则......我必须随时更新序列化类,更新,插入更新或更改parm?
想法?
由于
答案 0 :(得分:0)
字典怎么样?
<Serializable()>
Public Class UserData
Public Property UserGUID As GUID
Public Property Parameters As Dictionary(Of String, String)
End Class
然后你可以在字典中填写如下内容:
{{"Name", "Sir Launcelot of Camelot"},
{"Quest","To seek the Holy Grail"},
{"Favorite Color","Blue"},
{"Favorite Place","Castle Anthrax"},
...
}
你可以有一个看起来像这样的表:
UserGUID | Parameter | Value
-----------------------------------------------------------
AZ-12-43-EF | Name | Sir Launcelot of Camelot
AZ-12-43-EF | Quest | To seek the Holy Grail
AZ-12-43-EF | Favorite Color | Blue
34-DF-E4-22 | Name | Sir Galahad of Camelot
34-DF-E4-22 | Quest | I seek the Holy Grail
34-DF-E4-22 | Favorite Color | Blue. No yel-- Auuuuuuuugh!
如果您需要更复杂的参数值,也许您可以存储与每个参数一起使用的JSON字符串? ...或者,如果你已经走了那么远,你可以将所有用户数据作为JSON字符串;)
修改强>
要显示数据,您有几个选项,如果您知道自己想要的条目,可以直接将其从字典中删除:
If userData.Parameters.ContainsKey("Name") Then
textBoxName = userData.Parameters("Name")
Else
'Name value not found
textBoxName = "Enter name here"
End If
如果要显示表格中的所有参数,则必须先将字典转换为其他参数。例如,要绑定到DataGridView
,您可以执行以下操作:
Dim parameterList = From entry In userData.Parameters
Select New With { .Parameter = entry.Key, entry.Value }
dataGridView1.DataSource = parameterList.ToArray()
在上面的示例中,parameterList
实际上是anonymous type的IEnumerable
,其中包含Parameter As String
和Value As String
两个属性。
了解有关Dictionary
的更多信息的资源:
...以及一些StackOverflow问题: