Domanda

Vorrei mappare un riferimento a un oggetto anziché il valore dell'oggetto con una HashTable

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

in questo modo quando recupererò il valore di " HEADERS_PATH " Potrò assegnare un valore a Me.headers_path

qualcosa come il " & Amp; & Quot; operatore in C

È stato utile?

Soluzione

Suppongo che Me.headers_path sia System.String. Perché System.String sono immutabili ciò che vuoi non può essere raggiunto. Ma puoi aggiungere un ulteriore livello di riferimento indiretto per ottenere un comportamento simile.

  

Tutti i problemi nell'informatica possono   essere risolto da un altro livello di   indirezione.    Butler Lampson

Esempio in C # (si prega di essere gentili da modificare in VB e rimuovere questo commento in seguito):

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"

Altri suggerimenti

rende il percorso delle intestazioni una proprietà (con set)

Questo sembra essere un dizionario, che in .Net 2.0 è possibile definire come Dizionario se i riferimenti che si desidera aggiornare sono sempre stringhe o Dizionario (non consigliato) se si desidera ottenere un riferimento arbitrario.

Se è necessario sostituire i valori nel dizionario, è possibile definire la propria classe e fornire alcuni metodi di supporto per renderlo più semplice.

Non sono del tutto sicuro di cosa tu voglia fare. Supponendo che smink sia corretto, ecco la traduzione VB del suo codice. Spiacente, non posso modificarlo, non credo di avere ancora abbastanza rappresentante.

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 - devi sfuggire alle parentesi angolate nella tua risposta, quindi usa & amp; lt; per un < e & amp; gt; per un > ;. Ancora una volta mi dispiace non aver potuto modificare il tuo post per te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top