Как присвоить значение строке с помощью VB.NET?

Рассмотрим следующий код:

    Dim S1 As String = "a"

    'this is the string in a file
    Dim StringFromFile As String = "S1=hello"

    Dim temp() As String = Split(StringFromFile, "=", -1, CompareMethod.Binary)
    'temp(0) = variable name
    'temp(1) = variable value

    'my question is: how to assign value to S1?

Я объявил строку с именем S1. Теперь я хочу присвоить новое значение S1. Новое строковое значение сохраняется в файле в следующем формате :[имя переменной][= в качестве разделителя][строковое значение] . Как присвоить значение S1 после получения имени и значения строковой переменной, которые хранятся в файле?

ПРИМЕЧАНИЕ:

temp(0) = "S1"
temp(1) = "hello"

Следует отметить, что строка с данными исходит из файла, который может время от времени меняться! Когда файл изменяется, я хочу, чтобы переменные также менялись.

Дальнейшее уточнение

Мне нужен фрагмент кода, который при обработке такой строки, как "S1=hello", код сначала найдет объявленную переменную (, т.е. S1 ), а затем присвоит переменную S1 со строкой «привет». "=" просто действовал как разделитель для имени переменной и значения переменной.

ОБНОВЛЕНИЕ:

Моя попытка использовать пример Mathias Lykkegaard Lorenzen EDIT 2, но потерпела неудачу с "NullReferenceException" в этой строке "Field.SetValue(Me, VariableValue)". Пожалуйста, помогите мне решить проблему. Ниже приведен мой код, основанный на примере EDIT 2 Матиаса Ликкегаарда Лоренцена:

Public Sub Ask()
    Try
        Dim S1 As String = "a"

        Dim StringFromFile As String = "S1=hello"

        Dim temp() As String = Split(StringFromFile, "=", -1, CompareMethod.Binary)
        'temp(0) = variable name
        'temp(1) = variable value

        'my question is: how to assign value to S1?
        Dim TypeOfMe As Type = Me.GetType()

        'did this for readability.
        Dim VariableName As String = temp(0)
        Dim VariableValue As String = temp(1)

        'get the field in the class which is private, given the specific name (VariableName).
        Dim Field As FieldInfo = TypeOfMe.GetField(VariableName, BindingFlags.NonPublic Or BindingFlags.Instance)

        'set the value of that field, on the object "Me".
        Field.SetValue(Me, VariableValue) '<-- this line caused NullReferenceException
        MessageBox.Show(S1)
    Catch ex As Exception
        MessageBox.Show(ex.ToString)
    End Try

End Sub
9
задан Pan Pizza 29 April 2012 в 13:00
поделиться