製品コードがこれらの型をインスタンス化することはおそらく意味がありませんが、コンストラクターの非推奨により、Http
実装を使用するユニット テスト クライアントが本来WebRequest/Response
よりもはるかに多くの問題を抱えています。コンストラクターを取り除くことには価値がなく、コンストラクターを持つことには明らかな価値があるとは思いません。では、コンストラクターを廃止する技術的な理由は何ですか?
1 に答える
うーん、なぜ正確に のコンストラクターが必要なのHttpWebRequest
ですか? WebRequest.Create
最初からすべてのバージョンでそのようなリクエストを作成するための好ましい方法として提案されていると比較して、それの好みはわかりません。
このメソッドはHttpWebRequest
asを返しWebRequest
ますが、必要に応じて直接型にキャストできます。file://
または などの他のプロトコルを指定するftp://
と、対応する型が返されます。
この廃止リストWebRequest
は、使用されるすべてのプラットフォームの .NET Core の標準化の一部であり、コードの 1 つのポイントで作成を維持する方がはるかに簡単になると思います。
更新: classの派生
に関するこの記事を見たことがあると思いますので、ここに私の意見の別のパックを書きます:WebRequest
から出発するときはWebRequest
、次の 2 つのポイントが必要です。
IWebRequestCreate
インターフェイスを実装する- クラスを
WebRequest.RegisterPrefix
メソッドに登録する
MSDN が言うように:
この
HttpWebRequest
クラスは、デフォルトで HTTP および HTTPS スキームのサービス要求に登録されています。WebRequest
これらのスキームに別の子孫を登録しようとすると失敗します。
したがって、Microsoft はhttp
およびhttps
指向のクラスを制御したいと考えており、この機能を独自のものに置き換えることを誰も望んでいません。これは、いくつかのセキュリティ上の懸念から実行できると思います。悲しいけれど事実です。