You splitted AddFieldDefsFromClass into several functions, that's fine.
Now I recognized, that FindPropInfoByName will force AureliusDataset writing and reading using properties.
We are using your changes on AddFieldDefsFromClass, so that we are looping Fields using Explorer.GetColumns, providing their Optimizations.
I think, it could also be solved in your Dataset, if you extend TFieldInclusion.
TFieldInclusion.Columns, TFieldInclusion.ClassVisibleMembers, so the user could choose, if Fields (beeing exact, I have to say FieldDefs...) should be generated loopung Columns or ClassVisibleMembers looping.
Because there are some cases, you do not wan't to execute Getter and Setter-Methods, but there are also cases, you want to...
I think this would gave us maximum flexibility.
But in first step it would help a lot, if FindPropInfoByName would be protected and virtual, so that it is overwriteable.