私はVB.NETを使用しています。私は自分のプログラムと同じように動作する小規模のテストプロジェクトを作成しました。私は、Object1.getType()= "ThisType"の場合はgetObjectType(object1)、次にプロパティを取得します。各オブジェクトにはIDが含まれており、これを実行したいと思います: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