Jeg jobber med en kode for å bruke HttpWebRequest asynkront. Hvis noen av dere noen gang har gjort dette før, vet du at feilhåndtering kan være litt vondt, for hvis et unntak blir kastet i en av tilbakeringingsmetodene, kan det ikke sendes tilbake til ringekoden via et forsøk / fangstblokk.
Det jeg vil gjøre er å håndtere feil ved å lagre unntak i tilstandsobjektet mitt som blir sendt til hver tilbakeringingsmetode. Hvis et unntak blir fanget, vil tilstandsobjektet bli oppdatert, og deretter blir http-samtalen avbrutt. Problemet jeg har er at i mitt statsobjekt må jeg bruke en Exception-egenskap slik at alle typer unntak kan lagres. Når ringekoden sjekker tilstandsobjektet og "ser" et unntak, vet den ikke hvilken type unntak det er.
Er det en måte å la statsobjektet mitt ha en hvilken som helst type unntak, men likevel holde unntaket sterkt skrevet?
State Object
public class HttpPostClientAsyncModel
{
public HttpResponseSnapshot Response { get; set; }
public HttpPostClientAsyncStatus Status { get; set; }
public Exception Exception { get; set; }
public WebRequest Request { get; set; }
}