Avatar billede mickni33 Nybegynder
15. august 2007 - 09:12 Der er 10 kommentarer og
1 løsning

Finde navne på mine klasser og metoder

er ved at lave et lille testværktøj og kunne godt tænke mig at man i en dropdown box havde alle sine klasser og metoderne til disse klasser i en anden dropdown box.

Men er det muligt at gennemsøge en mappe for klasser og ligge og navnene på klasserne over i hver sine strenge.

For hvis man så vælger at teste en bestemt klasse, vælger man den i en dropdown og i koden oprettes der nu et opjekt af den klasse??

Håber i forstår hva jeg mener...

I MSSQL kan man lave noget der ligner, hvor man laver en system select og får derved alle navnene på sine tabeller.
Kan man det samme i C#??
Avatar billede nielle Nybegynder
15. august 2007 - 09:32 #1
Nu ligger klasser jo ikke i en mappe, men derimod i et assembly (en .Net-exe eller -dll fil).

Men, sådan udskriver du navnene alle klasserne i en assembly:

using System;
using System.Reflection;

namespace e791762
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly theAssembly = Assembly.LoadFile(@"C:\Source.Net20\FilMedKlasser791762\bin\Debug\FilMedKlasser791762.dll");

            foreach (Type theType in theAssembly.GetTypes())
            {
                if (theType.IsClass)
                    Console.WriteLine(theType.Name);
            }
        }
    }
}
Avatar billede nielle Nybegynder
15. august 2007 - 09:37 #2
Sådan får du údskrevet alle klasserne og deres metoder:

using System;
using System.Reflection;

namespace e791762
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly theAssembly = Assembly.LoadFile(@"C:\Source.Net20\FilMedKlasser791762\bin\Debug\FilMedKlasser791762.dll");
            Scan4Classes(theAssembly);
        }

        static void Scan4Classes(Assembly theAssembly)
        {
            foreach (Type theType in theAssembly.GetTypes())
            {
                if (theType.IsClass)
                {
                    Console.WriteLine(theType.Name);
                    Scan4Methods(theType);
                }
            }
        }

        static void Scan4Methods(Type theClass)
        {
            foreach (MethodInfo theMethod in theClass.GetMethods())
            {
                Console.WriteLine("\t" + theMethod.Name);
            }
        }
    }
}
Avatar billede mickni33 Nybegynder
15. august 2007 - 09:49 #3
HAHAHAHAHAH det er fandme for smart :-)
det virker sikkert så lav et svar
Avatar billede mickni33 Nybegynder
15. august 2007 - 09:54 #4
har du et godt link? man kan sikkert en masse sjove ting...sysnes ikke MSDN var så godt
Avatar billede nielle Nybegynder
15. august 2007 - 09:55 #5
Der er mere:

using System;
using System.Reflection;

namespace e791762
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly theAssembly = Assembly.LoadFile(@"C:\Source.Net20\FilMedKlasser791762\bin\Debug\FilMedKlasser791762.dll");
            Scan4Classes(theAssembly);
        }

        static void Scan4Classes(Assembly theAssembly)
        {
            foreach (Type theType in theAssembly.GetTypes())
            {
                if (theType.IsClass)
                {
                    Console.WriteLine(theType.Name);
                    Scan4Methods(theType);
                }
            }
        }

        static void Scan4Methods(Type theClass)
        {
            foreach (MethodInfo theMethod in theClass.GetMethods())
            {
                Console.WriteLine("\t" + theMethod.Name);
                GetMethodSignature(theMethod);
            }
        }

        private static void GetMethodSignature(MethodInfo theMethod)
        {
            foreach (ParameterInfo parameter in theMethod.GetParameters())
                Console.WriteLine("\t\tParameter : {0} {1}", parameter.ParameterType, parameter.Name);

            Console.WriteLine("\t\tRetur type: " + theMethod.ReturnType.ToString());
        }
    }
}
Avatar billede nielle Nybegynder
15. august 2007 - 09:59 #6
Ikke så mange gode links...

Men der er dette her, som faktisk handler mere eller mindre om det problem du forsøger at løse:

http://my.execpc.com/~gopalan/dotnet/reflection.html
Avatar billede nielle Nybegynder
15. august 2007 - 09:59 #7
... og et svar :^)
Avatar billede mickni33 Nybegynder
15. august 2007 - 10:00 #8
Skal man selv skrive stien til hver enkel mappe eller kan man lave en scan
Avatar billede mickni33 Nybegynder
15. august 2007 - 10:01 #9
hmmm tror ikke jeg behøver scanne for alle klasserne ligger jo i min DLL
Avatar billede nielle Nybegynder
15. august 2007 - 10:04 #10
Hvis du skulle skanne, ville det vel være for at finde de DLL'er som ligger i en mappe?

Brug DirectoryInfo til dette formål.
Avatar billede mickni33 Nybegynder
15. august 2007 - 10:12 #11
aaahh ja ok
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