Frage

Ich möchte einen Verweis auf ein Objekt abzubilden anstelle des Objektwerts mit einem HashTable

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

auf diese Weise, wenn ich werde den Wert von „HEADERS_PATH“ abzurufen ich werde in der Lage sein, einen Wert zu Me.headers_path zuweisen

so etwas wie der "&" Operator in C

War es hilfreich?

Lösung

Ich gehe davon aus, dass Me.headers_path ein System.String ist. Da System.String sind unveränderlich, was Sie wollen nicht erreicht werden kann. Aber Sie können einen zusätzlichen Dereferenzierungsebene fügen Sie ein ähnliches Verhalten zu erreichen.

  

Alle Probleme in der Informatik kann   von einer anderen Ebene gelöst werden von   indirection.    Butler Lampson

Beispiel in C # (Bitte Art VB zu bearbeiten und diesen Kommentar entfernen später):

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"

Andere Tipps

macht Header Pfad eine Eigenschaft sein (mit Satz)

Dies scheint ein Wörterbuch zu sein, die in .Net 2.0 Sie als Wörterbuch definieren könnte, wenn die Referenzen Sie immer Strings aktualisieren möchten, oder Wörterbuch (nicht empfohlen), wenn Sie eine beliebige Referenz erhalten möchten.

Wenn Sie die Werte im Wörterbuch ersetzen müssen könnten Sie Ihre eigene Klasse definieren und einige Hilfsmethoden zur Verfügung stellen, um diese leichter zu machen.

I am not entirely sure what you want to do. Assuming that smink is correct then here is the VB translation of his code. Sorry I can't edit it, I don't think I have enough rep yet.

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 - you need to escape the angled brackets in your answer, so use &lt; for a < and &gt; for a >. Again sorry I couldn't just edit your post for you.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top