Accessing to the configuration from the domain layer is sometimes suitable for domain services, but it can make the service a bit harder to test in isolation.
You should avoid such access from entities and value objects, btw.
A better path is reading the configuration in the infrastructure layer and injecting the required values via constructor's arguments in the domain objects. Note that factories and repository are part of the infrastructure, thus they can access such configurations if required.
Finally a important note, out of experience: keep configuration as small as possible. In .NET the .config
file is the best place for configuration since it's where developers are already trained to look there. But in enterprise applications, they are likely to grow uncontrolled since each developer want to code flexible components. This is a smell of poor architecture: only make configurable what you know that will be used with different configurations.
It's easier to add a configuration section later, when actually needed, than remove a section that is cut&pasted at each deploy. Such configurations are likely to be overdesigned for a flexibility that they don't need.