题
我想用HashTable
映射对象的引用而不是对象值configMapping.Add("HEADERS_PATH", Me.headers_path)
当我要检索<!>“HEADERS_PATH <!>”的值时,我将能够为Me.headers_path
分配一个值类似<!>的东西; <!>安培; <!> QUOT; C中的运算符
解决方案
我假设 Me.headers_path 是一个System.String。因为 System.String 是不可变的,你想要的是无法实现的。但是,您可以添加额外的间接级别来实现类似的行为。
计算机科学的所有问题都可以 另一个层次的解决方案 间接。 Butler Lampson
C#中的示例(请善意编辑VB并稍后删除此评论):
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"
其他提示
使标题路径成为属性(带有设置)
这似乎是一个字典,在.Net 2.0中,如果要更新的引用总是字符串,则可以定义为Dictionary;如果要获取任意引用,则可以定义为Dictionary(不推荐)。
如果你需要替换字典中的值,你可以定义自己的类,并提供一些辅助方法来使这更容易。
我不完全确定你想做什么。假设smink是正确的,那么这里是他的代码的VB转换。抱歉,我无法编辑它,我认为我还没有足够的代表。
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 - 您需要在答案中转义斜角括号,因此请使用<!> amp; lt;对于<!> lt;和<!> amp; gt;对于<!> gt;。再说抱歉,我不能为你编辑你的帖子。
不隶属于 StackOverflow