Question

J'aimerais mapper une référence sur un objet au lieu de la valeur d'objet avec une table de hachage

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

Ainsi, lorsque je vais récupérer la valeur de & "HEADERS_PATH &"; Je pourrai attribuer une valeur à Me.headers_path

quelque chose comme le " & amp; " opérateur en C

Était-ce utile?

La solution

Je suppose que Me.headers_path est un System.String. Parce que System.String est immuable, vous ne pouvez pas obtenir ce que vous voulez. Mais vous pouvez ajouter un niveau supplémentaire d’indirection pour obtenir un comportement similaire.

  

Tous les problèmes informatiques peuvent   être résolu par un autre niveau de   indirection.    Butler Lampson

Exemple en C # (merci de bien vouloir éditer en VB et supprimer ce commentaire ultérieurement):

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"

Autres conseils

faire en sorte que le chemin des en-têtes soit une propriété (avec set)

Cela semble être un dictionnaire que vous pouvez définir dans .NET 2.0 comme Dictionnaire si les références à mettre à jour sont toujours des chaînes, ou Dictionnaire (non recommandé) si vous souhaitez obtenir une référence arbitraire.

Si vous devez remplacer les valeurs du dictionnaire, vous pouvez définir votre propre classe et fournir des méthodes d'assistance pour simplifier les choses.

Je ne suis pas tout à fait sûr de ce que vous voulez faire. En supposant que smink soit correct, voici la traduction VB de son code. Désolé, je ne peux pas le modifier, je ne pense pas avoir encore assez de représentants.

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 - vous devez échapper aux crochets inclinés dans votre réponse, utilisez donc & amp; lt; pour un < et & amp; gt; pour un > ;. Encore une fois désolé, je ne pouvais pas modifier votre message pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top