我不确定我是否正确地问了这个问题,因为我对此还是有点陌生...
但我正在尝试学习如何做(如果可能的话)是创建一个带有用户数据(姓名、地址、电话等)的可序列化类对象。对于我的项目,我将此用户数据称为用户参数。因为这个列表将继续增长。比如最喜欢的歌曲,最喜欢的颜色等等。
所以我想根据用户可用的“参数”动态创建对象。有些用户只有一个,有些用户会有更多。用户数据/参数将存储在一个单独的表中,其中包含用户 GUID 和标识参数的 FK。所以理想情况下,我只需要向该表添加一条新记录,后面的代码就可以正常工作。
否则...我必须在更新或更改参数时随时更新序列化类、更新、插入?
想法?
谢谢
最佳答案
字典怎么样?
<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
不过,如果您想在表格中显示所有参数,则必须先将字典转换成其他内容。例如,要绑定(bind)到 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字符串
.
学习更多关于 Dictionary
的资源:
...和一些 StackOverflow 问题:
关于vb.net - 在 vb.net webforms 中创建 "dynamic objects"的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802482/