2008-10-02 6 views
0

Je voudrais mapper une référence à un objet au lieu de la valeur de l'objet avec un HashtableCarte une référence d'objet avec Hashtable

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

cette façon quand je vais récupérer la valeur de « HEADERS_PATH » Je serai en mesure d'attribuer une valeur à Me.headers_path

quelque chose comme l'opérateur « & » en C

Répondre

3

Je suppose que Me.headers_path est un System.String. Parce que System.String sont immuables ce que vous voulez ne peut pas être atteint. Mais vous pouvez ajouter un niveau supplémentaire d'indirection pour obtenir un comportement similaire.

Tous les problèmes en informatique peuvent être résolus par un autre niveau de indirection. Butler Lampson

Exemple en C# (S'il vous plaît être gentil à modifier pour VB et supprimer ce commentaire plus tard):

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" 
1

faire headers_path être une propriété (avec jeu)

1

Cela semble être un dictionnaire, qui vous .Net 2.0 pourrait définir comme Dictionary si les références que vous voulez mettre à jour sont toujours des chaînes, ou Dictionary (non recommandé) si vous voulez obtenir une référence arbitraire.

Si vous devez remplacer les valeurs dans le dictionnaire, vous pouvez définir votre propre classe et fournir des méthodes d'aide pour faciliter cette tâche.

1

Je ne suis pas entièrement sûr de ce que vous voulez faire. En supposant que smink est correct alors voici la traduction VB de son code. Désolé, je ne peux pas le modifier, je ne pense pas avoir assez de rep pour le moment.

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 avez besoin pour échapper aux supports coudés dans votre réponse, utilisez donc & lt; pour < et & gt; pour un >. Encore une fois désolé je ne pouvais pas simplement éditer votre poste pour vous.

Questions connexes