“创造”的最佳方式是什么;“动态对象”;在vb.net webforms中

“创造”的最佳方式是什么;“动态对象”;在vb.net webforms中,vb.net,object,asp.net-4.5,Vb.net,Object,Asp.net 4.5,我不确定我问的这个问题是否正确,因为我对这个问题还是有点陌生 但我试图学习的是如何(如果可能的话)使用用户数据(姓名、地址、电话等)创建一个可序列化的类对象。对于我的项目,我将此用户数据作为用户参数引用。因为这个列表将继续增长。例如,fav歌曲、fav颜色等 因此,我希望根据用户提供的可用“参数”动态创建对象。一些用户将只有一个,其他用户将有更多。用户数据/参数将存储在一个单独的表中,其中包含用户GUID和标识参数的FK。因此,理想情况下,我只需要在这个表中添加一条新记录,后面的代码就可以正常工

我不确定我问的这个问题是否正确,因为我对这个问题还是有点陌生

但我试图学习的是如何(如果可能的话)使用用户数据(姓名、地址、电话等)创建一个可序列化的类对象。对于我的项目,我将此用户数据作为用户参数引用。因为这个列表将继续增长。例如,fav歌曲、fav颜色等

因此,我希望根据用户提供的可用“参数”动态创建对象。一些用户将只有一个,其他用户将有更多。用户数据/参数将存储在一个单独的表中,其中包含用户GUID和标识参数的FK。因此,理想情况下,我只需要在这个表中添加一条新记录,后面的代码就可以正常工作了

否则。。。无论何时更新或更改parm,我都必须更新序列化类、更新和插入

想法


谢谢

字典怎么样

<Serializable()>
Public Class UserData

  Public Property UserGUID As GUID
  Public Property Parameters As Dictionary(Of String, String)

End Class
你可以有一张这样的桌子:

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
实际上是一个具有两个属性的
IEnumerable
,即
参数作为字符串和
值作为字符串


了解有关
词典的更多信息的资源

。。。还有一些问题:


我想到的一个解决方案是只创建一个“列表”,这样列表中的每个项目都将包含关于1 parm的信息。这似乎可以奏效。。。。我需要更多地研究字典。。。你有一个很好的链接来解释它们是如何工作的吗?在我的答案末尾添加了一些链接,不确定它们是否是最好的,但它们应该工作。谢谢。。。我一直在研究这个。我真的认为这可能有效!我会查看你的链接,希望我能在本周晚些时候尝试!如果这对你有用,你应该接受这个答案。您将因此获得一些声誉积分;)如果没有,您也可以添加并接受自己的答案。我已编辑了我的答案,以显示如何从字典中获取数据以供显示。
Dim parameterList = From entry In userData.Parameters
                    Select New With { .Parameter = entry.Key, entry.Value }
dataGridView1.DataSource = parameterList.ToArray()