Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Keios
HV vaatleja

liitunud: 17.05.2004
|
10.06.2009 23:00:19
C# Reflection küsimus |
|
|
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
_________________ "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 |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
11.06.2009 00:47:53
|
|
|
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 |
|
 |
i8080
Kreisi kasutaja

liitunud: 15.03.2002
|
11.06.2009 07:02:48
|
|
|
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 |
|
 |
inzinz
HV kasutaja
liitunud: 26.01.2005
|
11.06.2009 13:50:44
|
|
|
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 |
|
 |
Keios
HV vaatleja

liitunud: 17.05.2004
|
12.06.2009 23:19:29
|
|
|
inzinz - täpselt see mida vajasin.
i8080 - väga hea tähelepanek!
suur tänu teile mõlemale!
_________________ "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 |
|
 |
|
lisa lemmikuks |
|
|
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
|
|