I've been struggling with this a bit on my current project. I've come across some cases where I have a concrete type that does not (and does not need) to implement any specific interface. Sometimes I want resolution to happen via the container because the type is registered with singleon lifecycle; sometimes the type has constructor parameters that are part of a larger object graph or are themselves registered with singleton lifecycles.
It always feels a bit strange to me when I type code like:
Container.RegisterType<MyConcreteType, MyConcreteType>();
Any thoughts on whether this is a code smell or violates best practices for using an IOC container?