Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  C# Reflection küsimus märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Keios
HV vaatleja
Keios

liitunud: 17.05.2004




sõnum 10.06.2009 23:00:19 C# Reflection küsimus vasta tsitaadiga


string kass;
string hobune;
string nugis;

string[] loomad = new string[] {"kass", "hobune", "nugis"};
string[] paarid = new string[] {"kass=kaslane", "hobune=hobulane", "nugis=nugis123"};

foreach (string paar in paarid)
{
   foreach (string loom in loomad)
   {
      if (paar.Contains(loom))
         /* siia peaks midagi põnevat kirjutama */  = paar.Split(new char[] {'='})[1];
   }
}

Soovin saada sellist tulemust:

kass="kaslane";
hobune="hobulane";
nugis="nugis123";


See peaks olema reflectioniga teostatav.
Proovisin selle järgi aga pi väärtuseks jääb mul miskipärast null - võibolla see pole täpselt see mida otsin.

Palun abi icon_smile.gif

_________________
"I don't count my sit-ups, I only start counting when it starts hurting because they’re the only ones that count". - Muhammad Ali
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 11.06.2009 00:47:53 vasta tsitaadiga

Kas need stringid kass, hobune, nugis on kindlalt funktsiooni sees või on klassis väljadena ?
Kui on klassi muutujad, siis saad teha nii:
this.GetType().GetField("kass").SetValue(this, "kaslane");

Täisversioon oleks umbes nii:
foreach (string paar in paarid) {
   foreach (string loom in loomad) {
      if (paar.Contains(loom)) {
         try {
             this.GetType().GetField(loom).SetValue(this, paar.Split("=".ToCharArray())[1]);
         } catch {}
      }
   }
}


Kui sul on need muutujad aga funktsioonis sees, siis peaks tegelt küsima, et mis eesmärgil sa sellist asja üldse teha tahad ? Võibolla annab asja ka teisiti lahendada ?

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
i8080
Kreisi kasutaja
i8080

liitunud: 15.03.2002



Autoriseeritud ID-kaardiga

sõnum 11.06.2009 07:02:48 vasta tsitaadiga

väike soovitus oleks.
paar.Contains(loom) on libedale teele minek. kui juhtub stringi tagaosas kattuvus olema, hakkad saama lisaks vääraid tulemusi
ja suure hulga lähteandmete korral pärast otsid end segaseks, et viga leida.
selle asemel sobiks paremini
paar.StartsWith(loom)
Kommentaarid: 169 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 151
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 11.06.2009 13:50:44 vasta tsitaadiga

Nja, seda ei jälginud pikemat näidet kirjutades.
Tegelt peaks kasutama isegi hoopis paar.StartsWith(loom+"=") et täiesti korrektselt töötaks.

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
Keios
HV vaatleja
Keios

liitunud: 17.05.2004




sõnum 12.06.2009 23:19:29 vasta tsitaadiga

inzinz - täpselt see mida vajasin.
i8080 - väga hea tähelepanek!

suur tänu teile mõlemale! icon_smile.gif

_________________
"I don't count my sit-ups, I only start counting when it starts hurting because they’re the only ones that count". - Muhammad Ali
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  C# Reflection küsimus
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.