vb.net - 在 vb.net webforms 中创建 "dynamic objects"的最佳方法是什么

标签 vb.net object asp.net-4.5

我不确定我是否正确地问了这个问题,因为我对此还是有点陌生​​...

但我正在尝试学习如何做(如果可能的话)是创建一个带有用户数据(姓名、地址、电话等)的可序列化类对象。对于我的项目,我将此用户数据称为用户参数。因为这个列表将继续增长。比如最喜欢的歌曲,最喜欢的颜色等等。

所以我想根据用户可用的“参数”动态创建对象。有些用户只有一个,有些用户会有更多。用户数据/参数将存储在一个单独的表中,其中包含用户 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 typeIEnumerable,它有两个属性,Parameter As StringValue As字符串.


学习更多关于 Dictionary 的资源:

...和一些 StackOverflow 问题:

关于vb.net - 在 vb.net webforms 中创建 "dynamic objects"的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802482/

相关文章:

asp.net - MVC 3 System.Web.Optimization bundle 单个文件

vb.net - 使用 odbc excel 驱动程序转换数据类型

typescript - 如何在 typescript 中使属性可选但不是未定义的

java - 在 Java 8 中对对象列表进行分组并将子组减少为不同的对象

asp.net-mvc - Debug模式下的 ASP.NET 4.5 捆绑 - 陈旧资源

asp.net-4.5 - UseLegacyPathHandling 未从 app.config 运行时元素正确加载

.net - 如何在 VB.NET 中为静态类编写方法扩展?

.net - 了解 VB.NET P/Invoke 声明中的 VBByRefStr

c# - 什么是NullReferenceException,如何解决?

java - 当对象没有相同的引用时从 ArrayList 中删除重复项