Avatar billede wolker Nybegynder
13. maj 2005 - 15:52 Der er 5 kommentarer og
1 løsning

Udtrække static fra en klasse

Jeg har en klasse med over 100 static property
eksempel:
public class LogDef
{
  public static int Test1 = 0   
  public static int Test2 = 100   
  public static int Test3 = 200
  public static int Test4 = 210
.... osv
}
Hvordan kan jeg få dem over i en dropdownbox, jeg er godt klar over at jeg kan copy/paste det og tilføje dem manuel. Men det kan jeg ikke bruge, det skal være noget med

foreach (property pp in <class>)
liste.items.add(new listitem(pp.name,pp.value))
Avatar billede nielle Nybegynder
13. maj 2005 - 18:35 #1
System.Reflection er din ven:

using System;
using System.Reflection;

namespace Eksperten
{
    public class LogDef
    {
        public static int Test1 = 0;
        public static int Test2 = 100;
        public static int Test3 = 200;
        public static int Test4 = 210;
    }

    class App
    {
        [STAThread]
        static void Main(string[] args)
        {
            LogDef LD = new LogDef();

            Type TypeLD = LD.GetType();
            FieldInfo[] StaticFieldsLD = TypeLD.GetFields(BindingFlags.Public | BindingFlags.Static);
            for (int FieldNo=0; FieldNo<StaticFieldsLD.Length; FieldNo++)
            {
                Console.WriteLine("Navn={0}, Type={1}, Værdi={2}",
                    StaticFieldsLD[FieldNo].Name,
                    StaticFieldsLD[FieldNo].FieldType,
                    StaticFieldsLD[FieldNo].GetValue(null));
            }
        }
    }
}
Avatar billede Syska Mester
13. maj 2005 - 22:35 #2
det er sq smart må jeg sige..... man kan sq mange ting lige når man ser lyset for enden af gangen :-)
Avatar billede wolker Nybegynder
14. maj 2005 - 23:57 #3
nielle>>
Det var lige det jeg skulle bruge, giv et svar, så du kan få dine point

Jeg har lige et lille tillægsspørgsmål, kender du også en smart metode til at få dem sorteret alfabetisk. For når jeg bare smider dem over i en dropdown er det svært at finde en bestemt en ud af en liste på over 100. Jeg kan godt selv lave en sortering, men det blive noget med at smide dem over i et array og så køre en alm. boblesort på dem, men der er vel en smartere/nemmere måde at gøre det på.
Avatar billede nielle Nybegynder
15. maj 2005 - 08:11 #4
Du kan ikke lige få dem sorteret mens at du udtrækker dem, men du behøves nu heller ikke selv at gøre noget videre for at sortere dem - det job klare SortedList fra System.Collections ganske udmærket:

using System;
using System.Collections;
using System.Reflection;

namespace Eksperten
{
    public class LogDef
    {
        public static int Test4 = 210;
        public static int Test1 = 0;
        public static int Test3 = 200;
        public static int Test2 = 100;
    }

    class App
    {
        [STAThread]
        static void Main(string[] args)
        {
            LogDef LD = new LogDef();

            SortedList sorteretStrenge = new SortedList();

            Type TypeLD = LD.GetType();
            FieldInfo[] StaticFieldsLD = TypeLD.GetFields(BindingFlags.Public | BindingFlags.Static);
            for (int FieldNo=0; FieldNo<StaticFieldsLD.Length; FieldNo++)
            {
                string usorteretStreng = string.Format("Navn={0}, Type={1}, Værdi={2}",
                    StaticFieldsLD[FieldNo].Name,
                    StaticFieldsLD[FieldNo].FieldType,
                    StaticFieldsLD[FieldNo].GetValue(null));
                sorteretStrenge.Add(usorteretStreng, null);
            }

            foreach (string sorteretStreng in sorteretStrenge.Keys)
            {
                Console.WriteLine(sorteretStreng);
            }
        }
    }
}
Avatar billede nielle Nybegynder
15. maj 2005 - 08:12 #5
Og et svar. :^)
Avatar billede wolker Nybegynder
18. maj 2005 - 10:37 #6
Tak, det var lige det jeg manglede
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester