したがって、http://localhost:1000/blah/blah/blah
のようなアドレスを含むこのUri
オブジェクトがあります。ポート番号を変更し、アドレスの他のすべての部分をそのままにしておく必要があります。 http://localhost:1080/blah/blah/blah
である必要があるとしましょう。
Uri
オブジェクトはほとんど不変なので、Port
プロパティを介してポート番号にアクセスできますが、読み取り専用です。 Uri
オブジェクトを別のオブジェクトとまったく同じように、ただし異なるポートで作成するための正しい方法はありますか? 「正気」とは、「正規表現や文字列操作をいじることなく」という意味です。上記の例では些細なことですが、それでも私にはワームの缶のようなにおいがします。それが唯一の方法である場合、私はそれがすでに誰かによって実装されていて、おそらくそこにいくつかのヘルパーがいることを本当に望んでいます(私は何も見つかりませんでした)
前もって感謝します。
UriBuilderクラスを検討しましたか?
http://msdn.Microsoft.com/en-us/library/system.uribuilder.aspx
UriBuilderクラスは、変更ごとに新しいUriインスタンスを作成せずに、Uriインスタンスのコンテンツを変更する便利な方法を提供します。
UriBuilderプロパティは、読み取り専用のUriプロパティへの読み取り/書き込みアクセスを提供して、変更できるようにします。
riBuilder に2回投票します。私は実際にURIのポートを変更するための拡張メソッドを持っています:
public static class UriExtensions {
public static Uri SetPort(this Uri uri, int newPort) {
var builder = new UriBuilder(uri);
builder.Port = newPort;
return builder.Uri;
}
}
使用法:
var uri = new Uri("http://localhost:1000/blah/blah/blah");
uri = uri.SetPort(1337); // http://localhost:1337/blah/blah/blah