Да, это возможно, если ...
Примечание: вы вывесили класс с публичными полями, например, Public CompanyName As String
. Хотя обычно полезно использовать свойства - Public Property CompanyName As String
. Код приведен ниже для свойств класса, но вы можете заменить PropertyInfo
на FieldInfo
. Тем не менее, рекомендуется использовать свойства для отображения значений классов.
Если вы ищете ответ «да/нет» на вопрос, может устанавливать свойства через каждый из них?, ответ есть. Но больше вопросов о вашем вопросе должно возникнуть. Когда, почему, зачем ... и т. Д.
Например, у нас есть ситуация, когда определенные типы имеют общие свойства с другими типами, иногда даже из этих типов, и нам нужно их преобразовать. Один из способов - использовать шаблон «Decorator». Но вот то, что мы сделали, чтобы увлажнять свойства (отказ от ответственности - код был преобразован из C# через конвертер, и я добавил некоторые Tings, как «как тип», я не уверен, что это 100% правильно)
''' Everything "S" - source, "D" - destination. "T" - type
Public Shared Function Hydrate(Of TS, TD)(source As TS, destination As TD) As TD
Dim sPI() As PropertyInfo =
source.[GetType]().GetProperties(BindingFlags.[Public] Or BindingFlags.Instance)
Dim dPI() As PropertyInfo =
destination.[GetType]().GetProperties(BindingFlags.[Public] Or BindingFlags.Instance)
For Each s As PropertyInfo In sPI
Dim d As PropertyInfo =
dPI.FirstOrDefault(Function(pi) pi.Name = s.Name AndAlso pi.PropertyType = s.PropertyType)
If d IsNot Nothing Then
d.SetValue(destination, s.GetValue(source, Nothing), Nothing)
End If
Next
Return destination
End Function
Так , вот так. В этом примере свойства повторяются и когда их имена и типы данных точно совпадают, они заполняются. Но кроме увлажнения подобных моделей, каково его использование? Я имею в виду, это то, что происходит внутри, когда JSON десериализуется и т. Д. Но в повседневном программировании вы не делаете ничего подобного.
Для каждого предназначена для итерации коллекции - здесь не требуется. – Plutonix
есть ли способ сделать это здесь или иначе, чтобы делать то, что мне нужно? –
Его совсем не ясно, что вы пытаетесь сделать. Чтобы «установить» всех этих членов по одному методу, я бы использовал constuctor – Plutonix