Methodenstarter als Vorlage

In Ausgabe 2/2015 haben wir unter dem Titel “Experimentieren mit der Konsole” eine Technik vorgestellt, mit der Sie die Methoden einer Klasse direkt in der Konsole auflisten und dort zur Ausführung auswählen können. Der Nachteil war, dass Sie damit nur eine Klasse mit fest vorgegebenem Klassennamen referenzieren konnten. Dies haben wir nun erweitert: mit einer neuen “Main”-Methode, die beim Start der Anwendung aufgerufen wird und alle Methoden aller Klassen außer der Klasse “Program” selbst auflistet und so ermöglicht, diese zu starten.

Im vorliegenden Beitrag nun stellen wir Ihnen eine neue Version der Technik aus Experimentieren mit der Konsole vor, mit der Sie die zu testenden Methoden bequem in anderen Klassen anlegen, die sich optimalerweise auch noch in einer anderen Datei befinden. Damit wird das Ausprobieren von Code über einfache C#-Methoden noch einfacher als zuvor.

Alles, was Sie tun müssen, ist das Erstellen eines neuen Projekts als Konsolen-Projekt, dessen Datei Program.cs Sie mit dem Code aus Listing 1 füllen.

using System;
using System.Reflection;
using System.Collections;
namespace Methodenstarter {
     class Program {
         static void Main(string[] args) {
             int j = 0; int i = 1; int intType = 1;
             string strMethode = ""; string strBeschreibung = "";
             ArrayList Methoden = new ArrayList(); ArrayList Typen = new ArrayList();
             Type[] types; Type currentType = null;
             do {
                 i = 1;
                 Assembly assembly = Assembly.GetEntryAssembly();
                 Console.WriteLine("Assembly: {0}", assembly.FullName);
                 types = FindAllExportedTypesInNamespaceFor(assembly);
                 Array.ForEach(types, delegate (Type type) {
                     if ((type.Name!="Program") & (type.Name!="Beschreibung")) {
                         intType = ++intType;
                         currentType = type;
                         Console.WriteLine("  Type: {0}", type.FullName);
                         Beschreibung beschreibung = (Beschreibung)type.GetCustomAttribute(typeof(Beschreibung));
                         if (beschreibung != null) { strBeschreibung = " - " + beschreibung.Text; }
                         else { strBeschreibung = ""; }
                         Console.WriteLine("    Klasse: {0}{1}", type.Name, strBeschreibung);
                         MethodInfo[] myArrayMethodInfo = type.GetMethods(BindingFlags.Public | BindingFlags.Static | 
                             BindingFlags.Instance | BindingFlags.DeclaredOnly);
                         strMethode = "";
                         foreach (MethodInfo methodInfo in myArrayMethodInfo) {
                             beschreibung = (Beschreibung)methodInfo.GetCustomAttribute(typeof(Beschreibung));
                             if (beschreibung != null) { strBeschreibung = " - " + beschreibung.Text; }
                             else { strBeschreibung = ""; }
                             strMethode = methodInfo.Name;
                             Console.WriteLine("      [{0,3}] {1} {2}", i++, strMethode, strBeschreibung);
                             Methoden.Add(strMethode);
                             Typen.Add(type);
                         }
                     }
                 });
                 String strMethodeNummer = Console.ReadLine();
                 if (int.TryParse(strMethodeNummer, out j)) {
                     if (j < i & j > 0) {
                         Console.WriteLine("Ausführen: {0}", j);
                         strMethode = (String)Methoden[j - 1];
                         currentType = (Type)Typen[j - 1];
                         currentType.InvokeMember(strMethode, BindingFlags.InvokeMethod, null, currentType, null);
                     }
                 }
                 else {
                     j = 0;
                 }
             } while (j > 0);
         }

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Visual Basic Entwickler:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 200 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Access, SQL und Cloud Automation

Unser exklusives Angebot für Dich!

VB-Entwickler
12,50 € im Monat*

(Gilt für den Abschluss eines Jahres-Abonnements.)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →