HashTableを使用してオブジェクト参照をマップする
質問
HashTableを使用して、オブジェクト値ではなくオブジェクトへの参照をマップしたい
configMapping.Add("HEADERS_PATH", Me.headers_path)
その方法で<!> quot; HEADERS_PATH <!> quotの値を取得するときMe.headers_pathに値を割り当てることができます
<!> quotのようなもの; <!> amp; <!> quot; Cの演算子
解決
Me.headers_path はSystem.Stringであると想定しています。 System.String は不変であるため、目的を達成することはできません。ただし、同様の動作を実現するために、間接レベルを追加することができます。
コンピュータサイエンスのすべての問題は 別のレベルで解決される 間接。 バトラーランプソン
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"
他のヒント
ヘッダーパスをプロパティにする(setを使用)
これは辞書のように見えます。.Net2.0では、更新する参照が常に文字列の場合は辞書として定義でき、任意の参照を取得する場合は辞書(推奨されません)です。
辞書の値を置き換える必要がある場合は、独自のクラスを定義し、これを簡単にするヘルパーメソッドを提供できます。
私はあなたが何をしたいのか完全にはわかりません。 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;の場合。申し訳ありませんが、投稿を編集することはできませんでした。