Which approach is recommended in a DDD world... and why ?
aggregateRoot.Items.Add(...)
aggregateRoot.AddItem(...)
I think the first option is better since it is more related to the ubiquitous language.
Should I expose a readonly (IEnumerable) collection and some AddItem()/RemoveItem()/etc on the aggregateRoot (option 1) or expose a strongly typed collection (I don't like exposing IList< T > or even worst, List< T >) that supports adding/removing/etc (option 2).