Я использую VB.NET. Я создал небольшой тестовый проект, который работает аналогично моей программе. Я пытаюсь сказать что-то вроде: getObjectType (object1), если Object1.getType() = "ThisType", затем получить свойства. Каждый объект содержит идентификатор, и я хотел бы сделать это: Object1.Id = -1 (я знаю, что это будет не так просто или просто). Я думал, что есть способ сделать это, используя что-то вроде: Object1.SetValue (Value2Change, NewValue), но это не работает, и я не уверен, как это сделать. Ниже мой код. Спасибо!Установка значений с использованием Reflection
Module Module1
Sub Main()
Dim Db As New Luk_StackUp_ProgramEntities
Dim Obj1 As IEnumerable(Of Stackup) = (From a In Db.Stackups).ToList
Dim Obj2 As IEnumerable(Of Object) = (From a In Db.Stackups).ToList
Dim IdNow As Integer = Obj1(0).IdStackup
Dim StackUpNow As Stackup = (From a In Db.Stackups Where a.IdStackup = IdNow).Single
Console.WriteLine(StackUpNow)
getInfo(StackUpNow)
getInfo(Obj1(0), Obj1(0))
areObjectsSame(Obj1(0), Obj1(67))
switchObjects(Obj1(0), Obj2(1))
getObjectValues(Obj2(55))
Console.WriteLine("========================================")
TestCopyObject(StackUpNow)
ChangeObjectValues(StackUpNow)
Console.ReadKey()
End Sub
Private Sub ChangeObjectValues(Object1 As Object)
Console.WriteLine("Changing Object Values")
Dim myField As PropertyInfo() = Object1.GetType().GetProperties()
'Dim Index As Integer 'Did not find value
'For Index = 0 To myField.Length - 1
' If myField(Index).ToString.Trim = "IdStackup" Then
' Console.WriteLine("Found the ID")
' End If
'Next
If Object1.GetType().Name = "Stackup" Then
'Set the Value
End If
End Sub
Работал как очарование. Благодаря! И это единственный способ, который я нашел, я могу сделать это, не создавая обширный класс, чтобы выяснить свойства, а что нет. – MattCucco