Pregunta

Me gustaría asignar una referencia a un objeto en lugar del valor del objeto con un HashTable

configMapping.Add("HEADERS_PATH", Me.headers_path)

de esa manera cuando voy a recuperar el valor de " HEADERS_PATH " Podré asignar un valor a Me.headers_path

algo así como el " & amp; " operador en C

¿Fue útil?

Solución

Supongo que Me.headers_path es un System.String. Debido a que System.String son inmutables, lo que desea no se puede lograr. Pero puede agregar un nivel adicional de indirección para lograr un comportamiento similar.

  

Todos los problemas en informática pueden   ser resuelto por otro nivel de   indirección    Butler Lampson

Muestra en C # (tenga la amabilidad de editar en VB y eliminar este comentario más adelante):

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"

Otros consejos

hacer que la ruta de los encabezados sea una propiedad (con set)

Esto parecería ser un diccionario, que en .Net 2.0 podría definir como Diccionario si las referencias que desea actualizar son siempre cadenas, o Diccionario (no recomendado) si desea obtener una referencia arbitraria.

Si necesita reemplazar los valores en el diccionario, puede definir su propia clase y proporcionar algunos métodos auxiliares para que sea más fácil.

No estoy completamente seguro de lo que quieres hacer. Suponiendo que smink es correcto, aquí está la traducción VB de su código. Lo siento, no puedo editarlo, no creo que tenga suficiente representante todavía.

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: debe escapar de los corchetes angulados en su respuesta, así que use & amp; lt; para un < y & amp; gt; para un > ;. Nuevamente, lo siento, no pude editar tu publicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top