Toon posts:

[c#] Variabele naam van Classe

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor het opbouwen van een javascript menu maak ik gebruik van een classe (JsMenu). Nu wil ik het menu variabel opbouwen met gegevens uit een database aangezien het menu van persoon tot persoon kan wijzigen. Dit wil ik doen met behulp van een for loop:

code:
1
2
3
4
5
6
7
8
9
10
11
DataSet ds = DataAanvraag.HaalOmschrijving();

            JsMenu mainbar = new JsMenu("g_bar_data",true,50);

            for(int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                string omschrijving = ds.Tables[0].Rows[i][0].ToString().ToLower().Replace(" ","_");
                Debug.WriteLine(omschrijving);

                JsMenu ("sub_"+omschrijving) = new JsMenu(("sub_"+omschrijving),false);
            }


JsMenu ("sub_"+omschrijving) mag dus niet, hoe kan ik de code herschrijven dat ik deze naamgeving toch variobel aan kan maken?

[ Voor 8% gewijzigd door Verwijderd op 29-01-2004 14:38 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Als ik het goed begrijp, wil je adhv een type-naam (classnaam) die je uit je databank ophaalt, een object van die class instantiëren?

Als je dat bedoelt, dan kan je eens kijken naar de Activator class. Die class heeft methods zoals CreateInstance(), GetObject(), .... waarmee je dus een instance kunt creeëren van een typenaam die je opgeeft.

Ik vraag me trouwens af hoe je dat menu in elkaar steekt.... Je hebt toch niet voor ieder menu-item, een andere class? Want zo zie ik het anders wel, als ik naar je code kijk.

[ Voor 22% gewijzigd door whoami op 29-01-2004 14:47 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
edit:

probleem opgelost:

code:
1
JsMenu menu = new JsMenu(("sub_"+omschrijving),false);


(de oplossing ligt soms zo voor de hand :))

[ Voor 90% gewijzigd door Verwijderd op 29-01-2004 15:33 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Owja, ik zie het al....
Wat is de bedoeling hiervan:
code:
1
JsMenu ("sub_"+omschrijving) = new JsMenu(("sub_"+omschrijving),false)


Dat gaat natuurlijk nooit werken. Je moet een variabele-naam opgeven, en die variabele kan je niet gaan definieren door 2 strings samen te voegen.
JsMenu blaat = new JsMenu(....)
zal daarentegen wel werken.

Je kan het ook zo doen:
code:
1
2
3
4
5
JsMenu mainBar = new JsMenu(...);
for( int i = 0; i < aTable.Rows.Count; i++ )
{
    mainBar.add_item( new MenuItem(aTable.Rows[i]["omschrijving"].ToString(), ....) );
}

Ooit al eens gehoord van array's trouwens?

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Waarom wil je variabele variabelename?
Je kan toch gewoon gebruik maken van een Array of een ArrayList. Als je echt op naam wil kunnen oproepen dan kan je ook nog gebruik maken van een HashTable
C#:
1
2
3
4
Hashtable menus = new Hashtable();
menus[ "sub1" ] = new JsMenu();

JsMenu temp = (JsMenu)menus[ "sub1" ];

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
edit

[ Voor 99% gewijzigd door Verwijderd op 30-01-2004 10:12 ]

Pagina: 1