繁体   English   中英

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

[英]What is the best way to create “dynamic objects” in vb.net webforms

我不确定我是否正确地提出了这个问题,因为我还是有点新鲜......

但是我正在努力学习如何做(如果可能的话)是创建一个带有用户数据(名称,地址,电话等)的可序列化类对象。 对于我的项目,我将此用户数据称为用户参数。 随着这份名单将继续增长。 例如,fav歌曲,fav颜色等。

所以我想根据用户可用的“参数”动态创建对象。 有些用户只有一个,有些用户会有更多用户。 用户数据/参数将与用户GUID和标识参数的FK一起存储在单独的表中。 理想情况下,我只需要在此表中添加一条新记录,后面的代码就可以了。

否则......我必须随时更新序列化类,更新,插入更新或更改parm?

想法?

谢谢

字典怎么样?

<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实际上是一个匿名类型IEnumerable ,它具有两个属性, Parameter As String和值为Value As String


了解更多关于Dictionary资源:

...以及一些StackOverflow问题:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM