Hm. Ok, to clarify, for anybody else who may have been just as confused at my description, let me offer the following example, directly from the class library:
First and foremost, the library was to be a fluent mapper for Linq2Sql, so I have the following:
FluentEngine.AssociationMap
FluentEngine.AutoSyncEnum
FluentEngine.ClassMap
FluentEngine.ColumnMap
FluentEngine.FluentManager
FluentEngine.FluentSession
FluentEngine.IAssociationMap
FluentEngine.IColumnMap
FluentEngine.IMap
FluentEngine.ITypeMap
FluentEngine.Map
FluentEngine.TypeMap
FluentEngine.UpdateCheckEnum
Second, I wanted to bundle in a base repository so I wouldn’t have to keep adding it to my actuall apps, so I added in the following:
FluentEngine.IRepository
FluentEngine.Repository
Third, I needed an interface that specilized repositories could use to aide in overcoming concurrency issues, so I added:
FluentEngine.ITransferService
Next, I decided to add some other common things from my standard list of things I do in my mvc apps, so I added the following:
FluentEngine.AndSpecification
FluentEngine.ISpecification
FluentEngine.NotSpecification
FluentEngine.OrSpecification
FluentEngine.Specification
Because I validate in services, I also added:
FluentEngine.IValidationError
FluentEngine.IValidationService
FluentEngine.ValidationError
Lastly, I added some extension method classes and a controller factory for use with StructureMap.
Right now, as you can see, everything is one namespace. I rather like the idea of being able to simply add “using FluentEngine” and have access to everything I need. On the other hand, something like the following might be order…
FluentEngine.Concurrency
FluentEngine.Configuration
FluentEngine.Extension
FluentEngine.Mapping
FluentEngine.Persistence
FluentEngine.Specification
FluentEngine.Validation
Or should I rip out things that aren’t actually part of the fluent engine itself, and put them into a separate library?
FluentEngine.Configuration
FluentEngine.Mapping
FluentEngine.Persistence
-plus-
FluentEngine.Extras.Concurrency
FluentEngine.Extras.Extension
FluentEngine.Extras.Specification
FluentEngine.Extras.Validation
Is that more clear? Anyway, I’d like a few more comments before I decide how to wrap this up.
Thanks.