Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Casta till variabel typ...

Postades av 2004-10-12 21:23:50 - Jonas Österlöf, i forum asp.net generellt, Tråden har 8 Kommentarer och lästs av 547 personer

Hej!

Lite kryptisk rubrik tror jag. :-)

Jag har en hjälpklass som används av flera olika ascx-sidor. Sidorna presenterar delvis samma data, på ett likartat sätt, men m h a olika typer av kontroller (t.ex. labels på en sida, textboxar på en annan).

Vid flera tillfällen ska kontroller på sidorna manipuleras m h a hjälpklassen, vilket kräver att jag söker rätt på och castar kontrollen ifråga.

Vad jag gör nu är därför ungefär såhär:
if(myWebPage.FindControl("myControl").GetType().Name == "TextBox")
{
((TextBox)myWebPage.FindControl("myControl").GetType()
}
elseif(myWebPage.FindControl("myControl").GetType().Name == "Label")
{
((Label)myWebPage.FindControl("myControl")).Text = myString;
}

Detta funkar, men det skulle ju vara snyggare om jag inte behövde duplicera koden för varje kontrolltyp.
Ungefär såhär skulle jag alltså vilja göra:
System.Type myType = myWebPage.FindControl("myControl").GetType();

((myType)myWebPage.FindControl("myControl")).Text = myString;

Men det går icke. Kompilatorn kan förvisso i det läget inte veta huruvida det kommer att finnas en Text-property eller inte, men det vet ju jag... Det den klagar på är hursomhelst att typen myType inte finns.
Frågan är, finns det sätt att göra detta? Känns ju som att reflection skulle kunna vara lösningen, men jag är rätt lost i det ämnet.

Några idéer?

MVH
/Jonas


Svara

Sv: Casta till variabel typ...

Postades av 2004-10-12 21:26:49 - Patrik Löwendahl

Är det bara Text du vill komma åt?

isf kan du casta till Control


Svara

Sv: Casta till variabel typ...

Postades av 2004-10-12 21:36:08 - Jonas Österlöf

Sorry, dubbelpost, jag såg inte mitt eget svar först...


Svara

Sv: Casta till variabel typ...

Postades av 2004-10-12 21:38:14 - Jonas Österlöf

Hej Patrik!

Tack för svaret, men tyvärr funkar det inte.
Jag har ett antal andra manipulationer (av styles bl.a.) som jag löser på det sättet.
Men: 'System.Web.UI.Control' does not contain a definition for 'Text'...

MVH
/Jonas


Svara

Sv: Casta till variabel typ...

Postades av 2004-10-13 09:23:45 - Johan Bovin

Så här skulle du väl kunna göra, så länge det är properties

private void Page_Load(object sender, System.EventArgs e)
{
	
	FindControlAndSetProperty("TextBox1","Text","Hej",new object[0]);
}
private void FindControlAndSetProperty(string myControl, string property, object val, object[] index)
{
	Control ctrl=this.FindControl(myControl);
	PropertyInfo propInfo = ctrl.GetType().GetProperty(property);
	propInfo.SetValue(ctrl,val,index);
}


Svara

Sv: Casta till variabel typ...

Postades av 2004-10-13 11:20:22 - Jonas Österlöf

Tack Johan, en generell och bra lösning!

Jag måste verkligen sätta mig in mer i System.Reflection.
Några tips på litteratur/online-artiklar?

MVH
/Jonas


Svara

Sv: Casta till variabel typ...

Postades av 2004-10-13 11:40:09 - Andreas Håkansson

Jonas,

Dokumentationen på Reflection är faktiskt väldigt bra =) Finns online på MSDN om du inte har den installerad.


Svara

Sv: Casta till variabel typ...

Postades av 2004-10-13 14:19:39 - Jonas Österlöf

Tack Andreas!

Jo, jag har MSDN installerat och visst är den dokumentationen bra, som referens betraktat. Men jag är mer ute efter tutorials eller diskusioner som ger en kontext. Nu fanns det ju ett par reflection-exempel i dokumentationen och de ska jag förstås kolla upp.

Jag fick också tips, utanför Pellesoft, om den här ganska ingående genomgången:
http://www.ondotnet.com/lpt/a/1040

Det är ett fritt exempelkapitel från O'Reilly-boken Programming C#. Kan nog vara nåt för den som liksom jag känner mig grön i ämnet.

Det + MS-dokumentationen lär räcka för mig ett tag...

Tack igen allihop, bra svar som vanligt!

MVH
/Jonas




Svara

Sv: Casta till variabel typ...

Postades av 2004-10-13 14:38:55 - Andreas Håkansson

Jonas,

MSDN dokumentationen och en hälsosamt nyfikenhet kommer man långt på =) Skummade igenom länken och den såg bra ut. Mitt tips är helt enkelt att ta en av dina gamla klasser som du skrivit och kopiera in den i ett nytt projekt. I det projektet använder du dig av reflection för att gå igenom klassen och hämta ut olika typer av information.

Och som vanligt så är det bara att posta en fråga eller två om du kör fast =)


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 604
27 953
271 705
5 893
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies