Mijn C# kennis is een beetje gruizig, dus daarom kom ik er misschien niet helemaal uit.
Ik heb een klasse geschreven voor POST-acties naar een web-adres waarmee je met 2 simpele commando's, AddFile(string key, FileInfo f) en AddField(string key, string value), zowel files als velden kan deze klasse. Deze klasse zet dan vervolgens al deze gegevens om in een lading bytes welke naar een stream gestuurd kunnen worden voor de Stream van HttpWebRequest.GetRequestStream().
Dit werkt allemaal prima overigens.
Ik dacht echter slim te zijn en even HttpWebRequest te extenden naar HttpWebRequestMultiPart, zodat ik dan 1 klasse heb waar ik alles in kan doen en eigenlijk alleen nog maar bestanden en andere velden toe kan voegen en dan de respons op kan vragen. Ik snap alleen niet hoe ik die moet extenden, aangezien HttpWebRequest geinstantieerd wordt uit WebRequest.Create(string uri). Ik weet dus niet hoe de HttpWebRequest constructor wordt aangeroepen en als ik die al probeer te overriden dan zegt VS dat ie obsolete, maar als ik het dan toch probeer lukt het volgende ook niet:
De klasse is als volgt:
maar dan mist de constructor, dus doe ik het volgende:
Ik vermoed dat het te maken heeft met dat WebRequest abstract is en dat ie dus een descendant (HttpWebRequest) instantieerd.... maar die moet ik toch simpel kunnen extenden?
Ik heb een klasse geschreven voor POST-acties naar een web-adres waarmee je met 2 simpele commando's, AddFile(string key, FileInfo f) en AddField(string key, string value), zowel files als velden kan deze klasse. Deze klasse zet dan vervolgens al deze gegevens om in een lading bytes welke naar een stream gestuurd kunnen worden voor de Stream van HttpWebRequest.GetRequestStream().
Dit werkt allemaal prima overigens.
Ik dacht echter slim te zijn en even HttpWebRequest te extenden naar HttpWebRequestMultiPart, zodat ik dan 1 klasse heb waar ik alles in kan doen en eigenlijk alleen nog maar bestanden en andere velden toe kan voegen en dan de respons op kan vragen. Ik snap alleen niet hoe ik die moet extenden, aangezien HttpWebRequest geinstantieerd wordt uit WebRequest.Create(string uri). Ik weet dus niet hoe de HttpWebRequest constructor wordt aangeroepen en als ik die al probeer te overriden dan zegt VS dat ie obsolete, maar als ik het dan toch probeer lukt het volgende ook niet:
C#:
1
2
3
4
5
6
7
8
9
| //casten lukt niet HttpWebRequestMultiPart request = WebRequest.Create("http://www.test.tld"); //ook hier niet HttpWebRequestMultiPart request = (HttpWebRequestMultiPart)WebRequest.Create("http://www.test.tld"); //ook dit niet HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.test.tld"); (HttpWebRequestMultiPart)request.Methode() //cast lukt niet |
De klasse is als volgt:
C#:
1
2
| class WebRequestMultiPart : HttpWebRequest { } |
maar dan mist de constructor, dus doe ik het volgende:
C#:
1
2
3
4
5
6
7
| class WebRequestMultiPart : HttpWebRequest { protected WebRequestMultiPart(SerializationInfo serializationInfo, StreamingContext streamingContext) : base(serializationInfo, streamingContext) { //nog even niks } } |
Ik vermoed dat het te maken heeft met dat WebRequest abstract is en dat ie dus een descendant (HttpWebRequest) instantieerd.... maar die moet ik toch simpel kunnen extenden?
Engineering is like Tetris. Succes disappears and errors accumulate.