In my application I have an Array of Objects, The type of all objects will be always same but unknown but I need to update one property of object of array based on some condition
I tried to implement the same like below using reflection
Public Shared Sub FilterobjectArray(ByVal obj As Object())
Dim r = obj.Where(Function(x) CStr(x.[GetType]().GetProperty("Id")?.GetValue(x)) = "2")
For Each item In r
Dim propertyInfo As PropertyInfo = item.[GetType]().GetProperty("CompanyName")
propertyInfo.SetValue(item, Convert.ChangeType("MyCompany", propertyInfo.PropertyType), Nothing)
Next
End Sub
Problem I think the Lambda expression for filtering the array is wrong as it throws "Object reference not set " in x
My sample implementation
Company Entity
Public Class Company
Public Property Id As Integer
Public Property CompanyName As String
End Class
Implementation
Dim comp(2) As Object
Dim comp1 = New Company With {.Id = 1, .CompanyName = "Comp1"}
Dim comp2 = New Company With {.Id = 2, .CompanyName = "Comp2"}
comp(0) = comp1
comp(1) = comp2
FilterobjectArray(comp)
Can Someone Suggest What is wrong ,C# answers or syntax is also welcome
NB: error appears after first iteration in for loop
Aucun commentaire:
Enregistrer un commentaire