Построение динамических свойств во время выполнения в VB .NET - PullRequest
2 голосов
/ 15 сентября 2009

Есть ли способ динамического создания свойств во время выполнения в VB .NET с помощью самоанализа?

например. Предположим, у меня был класс

Public Class Foo
   Public Property Bar() As String
       get 
           ...
       end get
      set(ByVal value As String)
          ...
      end set
End Class

Есть ли способ создать свойство Bar во время выполнения?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 15 сентября 2009

Ответ Reflection.Emit . Не так весело писать код, но он делает то, что вы хотите.

3 голосов
/ 15 сентября 2009

Если вам нужен динамический список переменных, вы всегда можете установить объект словаря в качестве члена вашего класса, а затем установить или получить определенный элемент словаря с помощью метода.

1 голос
/ 15 сентября 2009

К сожалению, нет способа изменить структуру класса во время выполнения. Метаданные фиксируются во время компиляции и не изменяются во время выполнения.

Для Nitpickers:)

Это не на 100% верно. Профилирование и API ENC позволяют изменять структуру метаданных во время выполнения. Но ни один из них не подходит для этого сценария.

1 голос
/ 15 сентября 2009

В дополнение к моему комментарию, вы можете добавить индексатор к вашему классу, который позволит вам получить / установить переменную-член.

РЕДАКТИРОВАТЬ: я извиняюсь. Я не знал, что у vb.net нет индексаторов.
Но все еще можно написать код с помощью словаря поддержки, который может работать как индексатор

...