I heard that you are using a DB to map objects..if not, it will be interesting to give a new feature, a way to store data values into a single writer/reader abstraction class which can be override to save data values into a DB or into a single file, or, else any media and add a cache file.
The problem of keeping a consistently data values across all modal dialog and as a way to keep old values and replaces them if cancel button is clicked : I say, a transaction (like a commit/rollback in a database)
Sir - this looks like a nice start. I would strongly encourage you to put this project on GitHub and allow people to fork it, and/or send you pull requests to improve this tool. If you got a few interest co-developers, you could really get this thing to have some real adoption out there.
Amazing work here, thanks for sharing it with the rest of us. You might try putting this on github if you are interested in collaboration with others could see myself making pull requests to something like this to expand functionality
You have been working very hard and you easily got my 5!
However your framework will cover only a small part of a business application.
DevExpress XAF is a commercial product for "code-first", or preferably "low code development", with same C# syntax than what you chose, attribute driven, etc.
There is no limitation with DevExpress XAF:
- WinForm AND Web, at the same time, from the same code.
- Based on top of award winning components (grid, tree, ribbon, Outlook navigation, dropdown, etc. for WinForms and Aspx).
- Visual Studio + C# (or VB), absolute full control through code over every aspect of the application, if necessary.
- You describe your data model through code or visually in a class designer: Class, properties, aggregated lists (relations) or not. Most people prefer the code first approach though.
- XAF does the rest:
* Builds or updates the database, be it MSSQL, Oracle, etc.
* Prepares views for you: List views, detail views, Lookup views, that you can link to an "Outlook" navigation application.
* Gives access to CRUD operations via standard toolbar buttons (fully customizable).
- If necessary, you add views or navigation items, dashboards with graphics, gauges, etc., buttons/actions where you want, mainly by describing what you need, with only a few lines of code here and there.
- XAF has all standard features that a business application requires, under others: active directory login or standard authentication, user authorization, user input validation, appearance (bold, red, underlined, disabled, invisible, etc.), auditing, pivot, localization, etc. everything is so easy and well designed, ready to be used mostly by describing what you need.
I am using this XAF framework intensively since December 2014, and each day, I feel like sending to the DevExpress developers the caviar and the Champagne that they deserve for having build such a marvelous and unique tool. I assure you that it is not possible to build a framework that can do more that this one, simply because it has all what you need, implemented in the most logical, elegant and intuitive way, on the best development platform there is today, namely .NET, Visual Studio and C#.
Download the full XAF framework (one month trial), including their award winning controls DevExpress[^]
Disclaimer: I am not a DevExpress employee. I use their control set daily in my daytime job as an employee of a small software shop (4 developers) and as a hobbyist at night. The DevExpress tools, including XAF, help me every day to solve my business cases.
You are not the first and will not be the last who automates these kinds of things
Your approach is very nice - I am deep into WinForms since 2002 and have my own libraries for this - so yes, keep it up IMHO - and if it is just for your personal time savings when prototyping something or creating the 2001st form for that stupid base data table in your sqlite db!
I am currently working on something similar, attributes based too, but I want to transfer data from a database to a binary buffer (memory stream) and send it over tcp to a recipient - and that all without writing the code for it - just through some generic engines that work with attributes (and locally cache the reflection method info's once determined to increase performance)
so 5 from me because we share the same approach when we think about a task
Yes I should have included localization in the 'Future Development' section. There is a hook for this in the code though - the labels are generated by calling the class NaturalLanguageSystem, with the idea being that it could delegate to different implementations. So you could access a resource file, or even call Google Translate to get your localized labels.