Laden...

[erledigt] Type-Objekt anhand des Klassenamens als String erzeugen

Erstellt von SaschaK vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.498 Views
Thema geschlossen
S
SaschaK Themenstarter:in
2 Beiträge seit 2012
vor 11 Jahren
[erledigt] Type-Objekt anhand des Klassenamens als String erzeugen

Hey Leute,
ich bin ganz neu hier und hab mich vielleicht bei meiner Suchanfrage etwas doof ausgedrückt, aber
ich hab leider mit der Hilfe nichts finden können.

Ich habe folgendes Problem:

Ich habe eine Klasse, welche erst zur Laufzeit kompiliert wird.
Diese kann immer unterschiedlich heißen, deshalb möchte ich das
von einem String der z.B. das Wort "Produkt" enthält auf die Klasse "Produkt" abgeleitet wird.

Was bezwecke ich damit?
Diese Klasse wird serialisiert und deserialisiert. Der Benutzer kann "Felder" hinzufügen und wegnehmen.
Da aus dieser Klasse im Endeffekt eine Datenbank gebaut wird, möchte ich das alle Member der Klasse deren Name in dem String ist ausgelesen werden.

Das auslesen der Member funktioniert soweit, aber nur wenn ich die Klasse expliziet angebe
(siehe folgendem Codeausschnitt)


        private class Tabellen { public String Name; public String[] Felder; }

        private void Tabellendefinition()
        {
            List<Tabellen> Tabs = new List<Tabellen>();
            Tabellen item = new Tabellen();
            item.Name = "Produkt";
            //Hier soll eigentlich der Name der Klasse ALS STRING rein (item.Name)
            item.Felder = Felder(null);
            Tabs.Add(item);
        }

        private String[] Felder(String Klasse)
        {
            //so sollte es ungefähr aussehen, funktioniert aber nicht
            List<String> LstMember = new List<String>();
            //deshalb hier direkt Produkt und nicht Klasse (Produkt ist eine Klasse des Tools)
            Type KlassenType = typeof(Produkt);
            MemberInfo[] KlassenMemberInfo = KlassenType.GetMembers();
            foreach (MemberInfo mi in KlassenMemberInfo)
            { LstMember.Add(mi.Name); }

            return LstMember.ToArray();
        }

Was ich im Endeffekt bräuchrte wäre ein Denkanstoß wie ich das lösen kann.

Ich will hier nicht das jemand für mich die Arbeit macht. Nur nen Ratschlag ^^

schonmal Danke im Voraus für eure Zeit.

LG
Sascha

2.187 Beiträge seit 2005
vor 11 Jahren

Hallo SaschK,

System.Type.GetType(string) sollte dir bei diesem Problem helfen können.

Gruß
Juy Juka

S
SaschaK Themenstarter:in
2 Beiträge seit 2012
vor 11 Jahren

Hey JuyJuka,
erstmal danke für die schnelle Antwort.

Du bist mein heutiger Held 😃

Wie offentsichtlich man eine einfach Lösung übersehen kann 😄

1000 dank 😃

Thema geschlossen