Dergleichen habe ich noch nichts gefunden.
Ich erzeuge Forms beinahe nur programmatisch bis auf die von dir angesprochenen komplexen welche zumeist sehr einmalig sind und sowieso in einer anderen Technologie anderes aufgebaut. Unsere Motivation war ein wenig anders gelagert.
Leicht ist das Unterfangen nicht.
Du weißt bei manchen Properties den Initialiserungsstatus bspw. nicht, da der erst im Konstruktor gesetzt wird. Deswegen musst du alle Property Values rausschreiben.
Damit könntest du zwar jene Properties die du nicht setzen kannst überlesen und die noch nicht verfügbaren auf Default lassen. Das entspricht in etwa dem manuellen Implementieren. Die read only muss man noch ignorieren und dann musst du deine Komponenten so aufgebaut, der innere Status mit dem abgespeicherten Property Wert gegebenenfalls zusammenstimmt.
Ich hatte mir ganz schlicht einen Knopf gebaut der nicht visible ist an sich und der einfach den Status aller erzeugten Komponenten rausschreibt auf dem Weg habe ich mir zumindest mal eine Quick Shot vom Gröbsten gemacht. Besser als zur Laufzeit wirst du sowieso nicht. Das war der Code für den Constructor oder die erste Implementierung.
Der nächste Affenzirkus folgt sofort, dass du Marken im Constructor bräuchtest die nicht überschrieben werden dürfen usw. im Falle einer Änderung. Soweit habe ich mir die Sache nicht angetan.
[Edit] Das war ganze passierte vor der Zeit vor
Rtti. Wobei ich nicht weiß ob du private members mit Hilfe von
Rtti kannst setzen. Mir hat damals Ableiten nicht geholfen. Damit hätte wir müssen ein WidgetSet und soetwas interessiert mich nicht. Ein Komponente in Ehren hie und da ...
Selbst datengetrieben hat uns unter Winforms (.net 2.0) bewogen von der Rectangle weg jedes Control zu bauen. Das macht nur Sinn, wenn du die Fähigkeiten der Anwendung so aufbläst, dass sie mit Contexten, Views im Hintergrund usw... kann arbeiten. Aber du verlierst die gesamte Toolingfähigkeit. Alles hinter einer pragmatischen Lösung wächst sich schnell aus. Nichts gegen das Framework welches meine Cos damals bauten, das muss dann schon Server Umzug (auf eine andere Datenbank den Zugriff generieren usw...). Da hat bei Planungs- und Optimierungssystemen und durch den Einsatz in 5 gleichartigen Projekten Sinn gemacht. Halbe Lösungen bei Wiederverwendung verzögern das Auftreten von Problemen nur.