C# HttpWebRequest по сравнению с WebRequest

Я думаю, что у Java есть хорошая реализация этого:

http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat.html#year

Люди редко указывают годы в будущем, используя двузначный код. Реализация Java справляется с этим, предполагая, что диапазон отстает от 80 лет и на 20 лет впереди текущего года. Итак, сейчас 30 будет 2030, а 31 - 1931. Кроме того, эта реализация является гибкой, изменяя ее диапазоны с течением времени, чтобы вам не приходилось менять код каждые десять лет или около того.

Я только что проверил, и Excel также использует те же правила для преобразования двухзначного года. 1/1/29 превращается в 01.01.2029. 1/1/30 превращается в 01.01.1930.

109
задан Eonasdan 24 April 2013 в 21:18
поделиться

2 ответа

Метод Create является статическим и существует только в WebRequest . Вызов его как HttpWebRequest.Create может выглядеть иначе, но на самом деле он скомпилирован до вызова WebRequest.Create . Это только кажется на HttpWebRequest из-за наследования.

Внутренний метод Create использует фабричный шаблон для фактического создания объектов на основе Uri вы переходите к нему. Фактически вы можете получить обратно другие объекты, например FtpWebRequest или FileWebRequest , в зависимости от Uri .

133
ответ дан 24 November 2019 в 03:23
поделиться

WebRequest is an abstract class, which has a factory method Create that, depending on the URL passed in, creates an instance of a concrete subclass. Whether you need or want HttpWebRequest httpreq = (HttpWebRequest)WebRequest.Create(strUrl); instead of WebRequest req = WebRequest.Create(strUrl); depends on your needs, and on what kind of URLs you pass in.

If you only pass in HTTP: URL's, then the former code allows you to access the properties and methods the subclass HttpWebRequest implements in addition to those defined on the base class WebRequest. But if you passed in a FTP: URL then the attempt to cast to HttpWebRequest would fail.

The latter is generic and won't fail on any of the types of supported URL's but of course without casting to any subclass you can only access the properties and methods the base class defines.

-- via Martin Honnen

30
ответ дан 24 November 2019 в 03:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: