我有一个更新数据库中客户端的功能。传入客户端对象以及应更新的字段/属性的字符串数组。我需要一种基于数组中的内容访问客户端对象中每个属性的方法。基本上,我正在寻找与此JavaScript等效的VB .NET:

var fields = ["Firstname","Lastname","DOB"];
for(field in fields)
{
    var thisField = fields[field];
    client[thisField] = obj[thisField];
}

任何帮助将不胜感激!谢谢堆栈。

最佳答案

您可以使用Reflection执行此操作。在不了解有关如何设置数据对象的更多信息的情况下,我无法为您提供一个完美的示例,但这是一般的想法:

Dim myPerson As New Person
myPerson.FirstName = "John"
myPerson.LastName  = "Doe"
myPerson.DOB       = #1/1/2000#

Dim myUpdates As New Dictionary(Of String, Object)
myUpdates.Add("FirstName", "Adam")
myUpdates.Add("LastName" , "Maras")
myUpdates.Add("DOB"      , #1/1/1990#)

Dim personType As Type = GetType(Person)

For Each kvp As KeyValuePair(Of String, Object) In myUpdates
    Dim propInfo As PropertyInfo = personType.GetProperty(kvp.Key)

    If propInfo IsNot Nothing Then
        propInfo.SetValue(myPerson, kvp.Value)
    End If
Next

10-01 19:20