Ich erstelle ein generisches Windows-Formular, das T akzeptiert und Reflektion mit benutzerdefinierten Attributen verwendet, um Beschriftungen und Eingabesteuerelemente zur Laufzeit zu erstellen.
Beispiel:
%Vor%Hier ist ein Link zu einer vorherigen Frage für den Formularcode: SO Frage .
Dieses Formular könnte die folgende Entitätsklasse als Beispiel akzeptieren:
%Vor%Wie Sie sich vorstellen können, würde die Magie hinter dem Formular die Reflektion verwenden, um Datentypen, Validierungskriterien, bevorzugte Steuerarten usw. zu bestimmen.
Anstatt das Rad neu zu erfinden, dachte ich, dass es sich lohnen würde, nach SO zu fragen, wenn jemand solche Rahmen kennt. Unnötig zu sagen, dass ich eher nach einem einfachen als nach einem sperrigen Rahmen suche.
Soweit ich weiß, gibt es keine Frameworks, die den UI-Code zur Laufzeit generieren. Es gibt viele Werkzeuge (Code-Generatoren), die das vorher tun. Aber Sie hätten nicht den Vorteil, "nur" den Code zu ändern - Sie hatten einen zusätzlichen Schritt, wo Sie den Code-Generator starten müssten.
Wenn Sie die UI-Informationen zur Laufzeit wirklich erstellen möchten, würde ich Attribute für Ihre Eigenschaften generieren, die Ihrem UI-Generator mitteilen, wie er mit dieser Eigenschaft umgehen soll (wenn kein Attribut angegeben ist - haben Sie einen Standard für Ihre Datentypen) . Es ist eine Menge Codierung, aber könnte Sie Zeit für kleine bis mittlere Projekte in der Zukunft sparen.
Eine andere Sache, die Sie tun könnten, ist, Ihre UI-Informationen in eine XML-Datei zu externalisieren und einen Generator dafür zu haben. Es gibt tatsächlich einen Rahmen, der das tut - werfen Sie einen Blick auf das Re-Motion-Framework . Ich weiß nicht, ob der Teil der Benutzeroberfläche frei ist, aber einige Funktionen (z. B. Mixins), die Ihnen bei der Erfüllung Ihrer Aufgabe helfen könnten.
eXpressApp Framework (XAF) kann UI im laufenden Betrieb generieren. In einem einfachen Fall erstellt ein Programmierer nur Geschäftsentitäten und kümmert sich überhaupt nicht um die Benutzeroberfläche.
Tags und Links c# winforms reflection generics