- A readonly interface
- A read-write interface
- An F# record type
- An F# module for mapping code methods (with Statically Resolved Type Parameter support aka Duck Typing or Structural Typing)
- An F# class with
INotifyPropertyChanged
for WPF consumption
- Implementing interfaces is not allowed to be implicit so I've automated that headache.
INotifyPropertyChanged
desires magic strings (exception in the lovely new C# 6nameof
operator) so automation makes sure the strings are correct as of the last time T4 was run- If I pass around the read-only interface, I don't care how far down the rabbit hole of that object goes, it's immutable, no one is modifying it
- If I pass around the read-write interface, all the consuming methods can be ignorant of concrete types
- I'm generating Metadata from the db into the comments on the properties (tons of untapped potential here)
View the generated code and generator t4
- Generator and generated code from new T4 to F#
Things I want to add:
- foreign key information to the auto-generated property comments
- consider having the Read-Write interface implement the Read-Only interface
- figure out how to update Microsoft's Type Providers to have them implement my interfaces.
- add an option for generating Sql Sprocs that work against these types