What should I be careful about when building a class library complex enough to use internal dependency injection?
Assuming that it will use Castle Windsor (as an example), what would be the best place/method to configure the container, given that the library will be used by simple console application (with no DI), web forms using the same container (Castle Windsor), and web apps using a different container (NInject)?
I would use the facade pattern here: in the library, expose a public method on a public class that does the container initialization (such as a simple
Initialize()), and use Castle Windsor only internally within the library, so that the library clients don’t even know that you are using it.