Получение ссылки на Экземпляр класса именем строки - VB.NET

Это - возможное Отражение использования или некоторый другой метод для получения ссылки на определенный экземпляр класса с названия того экземпляра класса?

Например, платформа для приложений я разрабатываю в большой степени экземпляры класса общественности использования, такие как: Общественность bMyreference как MyReference = новый MyReference

Затем всюду по приложению bMyReference используется пользовательскими элементами управления и кодом.

Одним из свойств пользовательских элементов управления является "Имя поля", которое ссылается на Свойство в этих экземплярах класса (bMyReference. MyField) как строка.

То, что я хотел бы смочь сделать, анализируют эту строку "bMyReference. MyField" и затем вернулись к фактическому Экземпляру/Свойству.

В VB6 я использовал бы ОЦЕНКУ или что-то средство моделирования для преобразования строки в фактический объект, но это, очевидно, не работает в VB.net

То, что я изображаю, является чем-то вроде этого

Dim FieldName as String = MyControl.FieldName ' sets FielName to bMyReference.MyField

Dim FieldObject() as String = FieldName.Split(".") ' Split into the Object / Property

Dim myInstance as Object = ......... ' Obtain a reference to the Instance and set as myInstance

Dim myProperty = myInstance.GetType().GetProperty(FieldObject(1))
6
задан 12 March 2010 в 17:24
поделиться

1 ответ

Не знаю, понял ли я вас хорошо, но мой ответ да , вы можете сделать это путем отражения. Вам нужно будет импортировать пространство имен System.Reflection .

Вот пример:

    ' Note that I´m in namespace ConsoleApplication1
    Dim NameOfMyClass As String = "ConsoleApplication1.MyClassA"
    Dim NameOfMyPropertyInMyClass As String = "MyFieldInClassA"

    ' Note that you are getting a NEW instance of MyClassA
    Dim MyInstance As Object = Activator.CreateInstance(Type.GetType(NameOfMyClass))

    ' A PropertyInfo object will give you access to the value of your desired field
    Dim MyProperty As PropertyInfo = MyInstance.GetType().GetProperty(NameOfMyPropertyInMyClass)

После того, как у вас есть MyProperty, вы можете получить значение вашего свойства, точно так:

MyProperty.GetValue(MyInstance, Nothing)

Передав методу значение, которое вы хотите узнать.

Скажите, пожалуйста, если это решит ваш вопрос: -)

ИЗМЕНИТЬ

Это будет ClassA.vb

Public Class MyClassA

    Private _myFieldInClassA As String

    Public Property MyFieldInClassA() As String
        Get
            Return _myFieldInClassA
        End Get
        Set(ByVal value As String)
            _myFieldInClassA = value
        End Set
    End Property

End Class
8
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: