Pergunta

Gostaria de mapear uma referência para um objeto em vez do valor do objeto com um HashTable

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

assim quando for recuperar o valor de "HEADERS_PATH" poderei atribuir um valor a Me.headers_path

algo como o operador "&" em C

Foi útil?

Solução

Estou assumindo que Me.headers_path é um System.String.Porque System.String são imutáveis ​​o que você deseja não pode ser alcançado.Mas você pode adicionar um nível extra de indireção para obter um comportamento semelhante.

Todos os problemas na ciência da computação podem ser resolvidos por outro nível de indireção. Mordomo Lampson

Amostra em C# (por favor, edite para VB e remova este comentário mais tarde):

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"

Outras dicas

Faça de Headers_Path ser uma propriedade (com conjunto)

Isso parece ser um dicionário, que no .NET 2.0 você poderia definir como dicionário se as referências que você deseja atualizar forem sempre strings ou dicionário (não recomendado) se você deseja obter uma referência arbitrária.

Se você precisar substituir os valores no dicionário, poderá definir sua própria classe e fornecer alguns métodos auxiliares para facilitar isso.

Não tenho muita certeza do que você quer fazer. Supondo que o Smink esteja correto, aqui está a tradução VB de seu código. Desculpe, não posso editar, acho que ainda não tenho representante suficiente.

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 - você precisa escapar dos colchetes em sua resposta, então use <para <e> para a>. Mais uma vez, desculpe, eu não poderia apenas editar sua postagem para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top