Сопоставить ссылку на объект с помощью HashTable
Вопрос
Я хотел бы отобразить ссылку на объект вместо значения объекта с помощью HashTable
configMapping.Add("HEADERS_PATH", Me.headers_path)
таким образом, когда я собираюсь получить значение " HEADERS_PATH " Я смогу присвоить значение Me.headers_path
что-то вроде & & Усилитель; & Quot; оператор в C
Решение
Я предполагаю, что Me.headers_path является System.String. Поскольку System.String являются неизменяемыми, то, чего вы хотите, достичь невозможно. Но вы можете добавить дополнительный уровень косвенности для достижения аналогичного поведения.
Все проблемы в информатике могут быть решен другим уровнем Косвенная. Батлер Лэмпсон
Пример на C # (пожалуйста, отредактируйте VB и удалите этот комментарий позже):
public class Holder<T> {
public T Value { get; set; }
}
...
Holder<String> headerPath = new Holder<String>() { Value = "this is a test" };
configMapping.Add("HEADERS_PATH", headerPath);
...
((Holder<String>)configMapping["HEADERS_PATH"]).Value = "this is a new test";
// headerPath.Value == "this is a new test"
Другие советы
сделать путь заголовков свойством (с установленным)
Может показаться, что это словарь, который в .Net 2.0 можно определить как словарь, если ссылки, которые вы хотите обновить, всегда являются строками, или словарь (не рекомендуется), если вы хотите получить произвольную ссылку. Р>
Если вам нужно заменить значения в словаре, вы можете определить свой собственный класс и предоставить несколько вспомогательных методов, чтобы сделать это проще.
Я не совсем уверен, что ты хочешь делать. Если предположить, что smink является правильным, то вот перевод его кода на VB. Извините, я не могу отредактировать это, я не думаю, что у меня достаточно повторений.
public class Holder(Of T)
public Value as T
end class
...
Dim headerPath as new Holder(Of String)
headerPath.Value = "this is a test"
configMapping.Add("HEADERS_PATH", headerPath)
...
Directcast(configMapping["HEADERS_PATH"]),Holder(Of String)).Value = "this is a new test"
'headerPath.Value now equals "this is a new test"
@marcj - в вашем ответе нужно избегать угловых скобок, поэтому используйте & amp; lt; за < и & amp; gt; для > ;. Снова извините, я не могу просто отредактировать ваше сообщение для вас.