Forum » Programiranje » [c#] loopanje po fieldih classa
[c#] loopanje po fieldih classa
DuleKrtola ::
Imam class z ~5 fieldi. V temu classu bi imel še metodo, ki loopa čez vse fielde.
funkcija
Zdej ta funkcija ni definirana v classu, kličem jo
in deluje. Rad bi pa imel to funkcijo kot metodo v classu, se pravi, da bi jo klical
ampak me jebe getValue(object obj). Pač podat mu je treba instanco classa iz katere pobira vrednosti fieldov. "this" ne paše tja, kako torej to naredim?
mojKlass instanca = new mojKlass();
funkcija
void doLoop { Type type = instanca.GetType(); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo field in fields) { string imeFilda = field.Name; var vrednostFielda = field.GetValue(instanca); // stuff } }
Zdej ta funkcija ni definirana v classu, kličem jo
doLoop(instanca);
in deluje. Rad bi pa imel to funkcijo kot metodo v classu, se pravi, da bi jo klical
instanca.doLoop();
ampak me jebe getValue(object obj). Pač podat mu je treba instanco classa iz katere pobira vrednosti fieldov. "this" ne paše tja, kako torej to naredim?
- spremenil: DuleKrtola ()
DuleKrtola ::
Zakaj this ne bi pasal tja?
Ne vem, nek exception vrže.
luli, kot sem napisal, funkcija že dela. Js bi jo rad definiru kot metodo classa, ne kot neko zunanjo funkcijo. Tista 9. vrstica je problematična. Je kak drug način kako iterativno dobit vrednosti fielda "imeFielda" namesto uporabe "GetValue()"
DuleKrtola ::
No, zdej sem nahitr probal ponovit napako da bi prilepil tist exception in zadeva dela. Mogoče imam na šihtu starejši .net, ali pa sem naredu kako drugo neumnost. Bom vidu v ponedeljek
darkolord ::
this je ok. Verzija frameworka nima veze...
public class mojKlass { public string testField = "Test"; public void doLoop() { Type type = this.GetType(); FieldInfo[] fields = type.GetFields(); foreach (FieldInfo field in fields) { string imeFilda = field.Name; var vrednostFielda = field.GetValue(this); Console.WriteLine(vrednostFielda); // stuff } } }
Zgodovina sprememb…
- spremenilo: darkolord ()
luli ::
Torej naredi nov class z dedovanjem
public class tisti_ki_bo_dedoval : mojKlass
{
public void doLoop()
{
...
}
}
Potem pa :
tisti_ki_bo_dedoval = new tisti_ki_bo_dedoval()
V tem novem razredu boš imel metodo doLoop
Če pa imaš source od klassa pa pač v njem definiraš metodo.
Popravljeno :
Daj ti rajši primer class-a, da bomo sploh videli kaj rabiš. Iz opisa se ne da izluščit.
Glede na primere bi moral delati null.
public class tisti_ki_bo_dedoval : mojKlass
{
public void doLoop()
{
...
}
}
Potem pa :
tisti_ki_bo_dedoval = new tisti_ki_bo_dedoval()
V tem novem razredu boš imel metodo doLoop
Če pa imaš source od klassa pa pač v njem definiraš metodo.
Popravljeno :
Daj ti rajši primer class-a, da bomo sploh videli kaj rabiš. Iz opisa se ne da izluščit.
Glede na primere bi moral delati null.
Zgodovina sprememb…
- spremenilo: luli ()
DuleKrtola ::
Evo, pogruntal. Za to aplikacijo sem vzel en starejši podoben projekt, in sem spremenil namespace. Zato this ni delal. Form.cs in mojKlass sta sicer bila v istem NS, zdaj sem spremenil še default NS v project properties, pa še vedno ne dela :S
Nč, nov projekt pa kopi-pejst kode
Nč, nov projekt pa kopi-pejst kode
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Wordpress custom pluginOddelek: Izdelava spletišč | 989 (834) | Gandalfar |
» | Kontakt obrazecOddelek: Izdelava spletišč | 2061 (1906) | betmen |
» | [Java] Objekt poslan k metodi v kakšnem stanju?Oddelek: Programiranje | 1548 (995) | shadeX |
» | C# ProgramOddelek: Programiranje | 3097 (2020) | Spura |
» | [C++]Instanca razredaOddelek: Programiranje | 1541 (1432) | Senitel |