Avatar billede nielsbrinch Nybegynder
12. oktober 2004 - 14:36 Der er 7 kommentarer og
1 løsning

Cast fra Control til specifik UserControl-klasse

Jeg har en collection af System.Web.UI.Control som jeg ved indeholder en række UserControl's. En af mine UserControls hedder f.eks. "Vehicle" og denne Vehicle har nogle properties som er specifikke for den UserControl som jeg gerne vil tilgå.

Så hvordan kommer jeg fra Control til Vehicle.

Her er vejen fra Control til UserControl ved et simpelt cast.

UserControl vehicle = (UserControl)myPage.Controls[0];

Men den UserControl der kommer ud af det, ved ikke den er en Vehicle, så der er ikke nogle af dens Vehicle-properties tilgængelige.

Det er vigtigt at jeg ikke skal definere disse UserControls specifikt direkte i min codebehind-klasse.
Avatar billede arne_v Ekspert
12. oktober 2004 - 14:48 #1
Hvis du vil kalde Vehicle specifikke metoder så har du vel kun 2 muligheder:

Vehicle v = (Vehicle)pg.Controls[ix];
v.Foobar();

eller alternativt at bruge reflection til at kalde metoderne med !
Avatar billede nielsbrinch Nybegynder
12. oktober 2004 - 14:57 #2
Uhh ja, reflection. Gyyse. Det vil jeg vist ikke blande ind i det. Så laver jeg en abstrakt klasse som alle mine UserControls nedarver fra i stedet og caster til den.

Tak for dit input. Svar.
Avatar billede arne_v Ekspert
12. oktober 2004 - 14:59 #3
reflection er nu ikke så svært

og svar
Avatar billede nielsbrinch Nybegynder
12. oktober 2004 - 15:07 #4
Jeg har bare ingen erfaring med det, men har opfattelsen af at det ikke "pænt" :)
Avatar billede thrytter Nybegynder
12. oktober 2004 - 15:09 #5
Plejer at bruge noget i stil med:

  vehicle.GetType.GetProperty(_PropertyName_).SetValue(vehicle, _PropertyValue_, Nothing)

for at sætte Property's på mine kontroller
Avatar billede nielsbrinch Nybegynder
12. oktober 2004 - 15:12 #6
Det ser rigtig performance-dyrt ud.
Avatar billede arne_v Ekspert
12. oktober 2004 - 15:13 #7
reflection koster lidt i performance

men hvor mange millioner gange vil du gøre det i minuttet ?
Avatar billede nielsbrinch Nybegynder
12. oktober 2004 - 16:16 #8
Nej du har ret. Det er det forkerte sted at spare.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester