1. you should try to limit Windsors exposure in objects. if you do
need the container inject IKernel into the object. windsor is just a
wrapper around the micro kernel. the kernel is where all the work is
really done.
2. the great thing about the micro kernel are all the options for
configuration. however the problematic thing about the micro kernel
are all the options for configuration :) the kernel registers
components by type and key. the default key is the full name of the
type [namespace].[name of object]. this of course can be overridden. I
believe the default order for resolution from the kernel is:
1. if there is 1 implementation in the kernel resolve it.
2. if there are multiple implementations and the name of the parameter
matches a key resolve the component for that key
3. if there are multiple implementations and the name of the parameter
does not match any keys resolve the 1st component registered
since the kernel is so expendable, you can implement your own
resolution logic, but this an advanced feature.
when I have multiple instances on an interface in my system I utilize
#2 above.
I didn't see where you are registering your objects above? are you
using xml configuration? if so I believe you need to pass a new
XmlInterpreter() into the WindsorContainer. i find the xml
configuration extremely annoying. I use programmatic configuration
along with my own AbstractFacility implementations to encapsulate the
registration. I haven't needed a plug-in architecture though. You can
mix and match the programmatic with xml configs as well to reduce the
angle brackets required.
> 2. How does Windsor handle multiple types implementing the same
> interface? How do I ensure the proper type is created?