我有一个更新数据库中客户端的功能。传入客户端对象,以及应更新的字段/属性的字符串数组。我需要一种方法来访问客户端对象中的每个属性,具体取决于数组中的内容。基本上,我正在寻找相当于这个javascript的VB .NET:
var fields = ["Firstname","Lastname","DOB"];
for(field in fields)
{
var thisField = fields[field];
client[thisField] = obj[thisField];
}
任何帮助将不胜感激!谢谢Stack。
答案 0 :(得分:6)
您可以使用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