J’ai vu ce morceau de code :
Pourquoi avez-vous besoin d’effectuer un cast ? Pourquoi ne pas simplement utiliser
? Et pourquoi est faire une
, pas un `` ?
J’ai vu ce morceau de code :
Pourquoi avez-vous besoin d’effectuer un cast ? Pourquoi ne pas simplement utiliser
? Et pourquoi est faire une
, pas un `` ?
L' Create
méthode est statique, et n'existe que sur WebRequest
. L'appel que HttpWebRequest.Create
peut être différent, mais son en fait compilée en appelant WebRequest.Create
. Il ne semble être sur HttpWebRequest
en raison de l'héritage.
L' Create
méthode en interne, utilise le modèle de fabrique de faire la création d'objets, basé sur l' Uri
vous passer. Vous pouvez récupérer d'autres objets, comme un FtpWebRequest
ou FileWebRequest
, selon l' Uri
.
WebRequest
est une classe abstraite, qui dispose d'une usine méthode Create
, en fonction de l'URL passée dans, crée une instance d'une sous-classe concrète. Si vous avez besoin ou envie
HttpWebRequest httpreq = (HttpWebRequest)WebRequest.Create(strUrl);
au lieu de
WebRequest req = WebRequest.Create(strUrl);
dépend de vos besoins et sur quel type d'Url que vous transmettez.
Si vous passez uniquement HTTP: URL, puis l'ancien code vous permet d'accéder aux propriétés et méthodes de la sous-classe HttpWebRequest
implémente en plus de celles définies sur la classe de base WebRequest
. Mais si vous avez passé dans un FTP: URL, puis la tentative de le jeter à l' HttpWebRequest
serait un échec.
Ce dernier est générique et ne manquerons pas sur tout les types de prises en charge les URL, mais bien sûr sans casting pour toute sous-classe, vous pouvez uniquement accéder aux propriétés et méthodes de la classe de base définit.
-- par Martin Honnen
Le casting est nécessaire uniquement lorsque vous en avez besoin accès aux membres unique de HttpWebRequest. L'idée est que si les propriétés/méthodes de prise en charge sur WebRequest sont suffisantes, alors vous pouvez écrire une application qui va travailler contre de nombreux types de demande/réponse de protocoles. Dans ce cas, l'URI peut être quelque chose de donné par l'utilisateur à l'aide de n'importe quel protocole pris en charge par les protocoles enfichables. De nouveaux protocoles peuvent même être pris en charge, sans modifier le logiciel d'origine.
Si votre application a besoin de plus de contrôle sur les fonctionnalités spécifiques à un protocole particulier, alors vous pouvez limiter requestUri vos système(s) et cast WebRequest pour le protocole spécifique à la sous-classe. Cela limite les protocoles pris en charge par votre application, mais vous permet d'ajuster le protocole de fonctionnalités spécifiques.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.