Создайте переменную объекта экземпляра класса во время выполнения в VB.NET - PullRequest
0 голосов
/ 29 сентября 2011

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

Например, -

Public Class Test
    Public Sub Test()
    End Sub
    Public Function Fval(ByVal Field As Object) As Object
        Return Field(1)
    End Function
End Class

''Creating the object of Test class
Public Class ExecTest
    Public Sub Main(ByVal args() As String) 
        Dim obj as New Test()
        Dim des As ScriptControlClass = New ScriptControlClass()
        des.Language = "VBScript"
        des.AddObject("TS", obj, True)
        Dim xx as Object = des.Eval("Fval(ABC)")
    End Sub
End Class

Редактировать: Этоболее подробное объяснение моего кода.Если вы заметили, что в функции Eval я попытался оценить Fval(abc).Теперь массив объектов abc не объявлен в классе Test, поскольку его существование заранее неизвестно.Я хочу создать массив объектов abc длины 2 и заполнить его некоторыми значениями, а когда вызывается Fval(abc), тогда значение индекса 1 должно быть возвращаемым значением Eval функции.

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

Вы не можете ничего добавить к типу в .NET после того, как тип создан.Тип действительно фиксированный.
Вы можете создать создать новый тип во время выполнения, который наследуется от Test, но это будет большая работа как для создания, так и для доступа к членам этого типа.

Aгораздо более полезный подход заключается в создании Dictionary(Of T, V) в классе Test и сохранении значений в этом словаре с именем переменной в качестве ключа в словаре.

0 голосов
/ 29 сентября 2011

Хм, на мой взгляд, это не имеет смысла.Потому что я не знаю фона.Но я бы попытался добавить объект List в ваш тестовый класс.В этот список вы можете добавить то, что вы хотите во время выполнения.

я знаю только код на C #, поэтому вам нужно перевести его:

List<Object> List = new List<Object>();

тогда вы можете использовать:

List.add(variable)

Надеюсь, это немного поможет.

...