ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
1097
1097
EMPFEHLEN
-
Hallo,
folgende Fragen:
1. Wie kann ich alle Klassen aus einem Namespace auslesen?
(angenommen Punkt 1 währe abgehackt)
2. Jetzt habe ich eine ListBox wo alle diese Klassen drin stehen. Wie kann ich folgendes nach dem Doppelklick auf die ListBox erreichen:
Code :1
[this.listBox1.SelectedItem.ToString()] myControl = new [this.listBox1.SelectedItem.ToString()]();
Das was in den []-Klammern drin steht ist der Name der Klasse.
Ich habe eine .DLL-Datei wo einige UserControls sind. Ich möchte alle auslesen und dann (wie schon beschrieben) mit this.panel.Controls.Add(myControls) darstellen.
bis jetzt hab ich das mit
usw. gemach. Doch das ist, meiner Meinung nach eine sehr schmutzige Methode.Code :1 2 3 4 5 6 7
if(...) { class1 c1 = new class1(); } else if(...) class2 cs = new class2(); }
Hätte jemand ein Vorschlag, wie man das o.g. Problem lösen könnte?
Danke
Gruß
d-Stench
PS: Habe nichts gefunden, da ich nicht genau weis nach was (Begriffe) ich eigendlich suchen muss.
-
Da wirst du wohl mit Reflection arbeiten müssen. Ich hab dir mal ein Beispiel angehängt, mit dem du aus einem bestimmten Namespace die einzelnen Typen herausbekommst und feststellen kannst, ob es sich dabei um ein UserControl handelt, oder nicht.
Dieses Beispiel kannst du bei dir nachbauen, musst jedoch die Controls dann noch instanzieren bevor du sie zur Controls.Collection hinzufügen kannst.
-
Moin!
Schaut für mich so aus als möchtest Du sowas in der Art wie ein Pluginframework realisieren?
Wenn ja, dann erläuter uns doch mal was Du eigentlich genau machen willst.
Es ist in dem Fall Ratsam mit BasisKlassen und Interfaces zu arbeiten,
um das Verwalten der Controls zu erleichtern und um Basisfunktionalitäten
wie zB das Speichern von Einstellungen etc. realisieren zu können.MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
02.11.06 13:07 #4
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Es kann aber durchaus auch vorkommen, dass ein Namespace nicht genauer einer Assembly zugeordnet werden kann.
So suchst du assembly-übergreifend, ausgehend von der Start-Assembly, über alle referenzierten Assemblies alle Typen in einem bestimmten Namespace.
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
using System; using System.Reflection; using System.Collections; namespace De.Tutorials.Training { /// <summary> /// /// </summary> /// <author>Thomas.Darimont</author> public class ListTypesInNamespaceExample { public static void Main(string[] args) { AssemblyName[] assemblyNames = new AssemblyName[Assembly.GetEntryAssembly().GetReferencedAssemblies().Length+1]; assemblyNames[0] = Assembly.GetEntryAssembly().GetName(); Assembly.GetEntryAssembly().GetReferencedAssemblies().CopyTo(assemblyNames, 1); foreach (AssemblyName assemblyName in assemblyNames) { Assembly assembly = Assembly.Load(assemblyName); Type[] types = FindAllExportedTypesInNamespaceFor(assembly, "De.Tutorials"); Array.ForEach(types, delegate(Type type) { Console.WriteLine(type.FullName); }); } } private static Type[] FindAllExportedTypesInNamespaceFor(Assembly assembly, string namespacePattern) { ArrayList list = new ArrayList(); Type[] types = assembly.GetExportedTypes(); foreach(Type type in types){ if (type.FullName.StartsWith(namespacePattern)) { list.Add(type); } } return (Type[])list.ToArray(typeof(Type)); } } }
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Es sing insgesammt zwei Projecte.
In einem wird eine Main-Anwendung geschrieben in dem anderen eine Bibliothek mit UserControls. Die Main-Anwendung soll alle KlassenNamen die in der Bibliothek vorhanden sind auslesen (z.B. in eine Listbox). Wenn diese Namen dann angeklickt werden soll eine Instanz erzeugt werden.
-
Danke für das Beispiel! (habe jetzt VS2005 installiert und das ausprobiert)
Du hast ja bereits im Quellcode festgelegt, welche Klassen du abfragst. Wie macht man das, wenn man die Klassen nicht kennt.
foreach(class myClass in myNamespace)
{
}
es soll dynamisch sein.
Ist es überhaupt möglich?
-
Schau Dir doch mal Tom's Beispiel an...
MfG,
Christian
Wer sein Problem definiert, hat es schon halb gelöst!
Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.
The Code Project! - C# Programming | C# / VB.NET Pendants
Regeln + Netiquette
Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
und vor allem nicht auf das, was euch die IHK dazu erzählt!
Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...
-
Ich denke, dass ich jetzt genug Material habe auf dem ich weiter selber aufbauen kann! Ich danke allen Beteiligten SEHR
Gruß
d-Stench
Ähnliche Themen
-
JBoss - alle geladenen Klassen herausfinden
Von Paul_W im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 13.01.11, 13:54 -
[Eclipse] Ist es möglich sich alle Werte der Variablen aller laufenden Klassen
Von DerKoenig im Forum JavaAntworten: 3Letzter Beitrag: 10.02.10, 10:23 -
Klassen in einem Browsergame
Von Kalma im Forum PHPAntworten: 5Letzter Beitrag: 01.12.08, 08:55 -
alle Klassen finden
Von VampyAnna im Forum JavaAntworten: 2Letzter Beitrag: 02.04.08, 16:28 -
mehrere klassen in einem GUI ausführen
Von sim26 im Forum JavaAntworten: 5Letzter Beitrag: 11.07.06, 12:03





Zitieren


Login





