Hi guys,
I'm currently running into a fairly interesting issue here. My code looks
like this:
windsorContainer.Register(AllTypes.FromAssembly(assembly)
.BasedOn<IAutoRegisteredService>()
.WithService
.FromInterface());
This is pretty nice; it gives me a very easy way to declaratively (without
manual C# code) register my services in the Windsor Container.
However, there is one slight problem I've run into now: there is an
interface called IModuleCommands which implements this interface
(IAutoRegisteredService). Then, my application modules have their own child
interfaces deriving from this interface, like IMainModuleCommands.
So we have:
IModuleCommands
|
IMainModuleCommands
|
MainModuleCommands (the implementing class)
All fair and square. The problem is just that this Register() call above
will only set the MainModuleCommands class up as a component providing the
IMainModuleCommands service. But the problem is that I have an abstract
base class (OverlayViewModelBase ) that doesn't know about the
IMainModuleCommands; it only knows about (and needs) the IModuleCommands
interface.
So, how do I change the above Register() line to register this component as
providing more than one service?
Then of course, there is the very interesting challenge I'm facing related
to the scope. If I would have multiple modules, each having a separate
implementor of IModuleCommands, we would definitely run into trouble (which
IModuleCommands implementer should the IoC container chose? How would it
know?).
This class (IModuleCommands) is being referred to by the
OverlayViewModelBase class. The nice part about Castle Windsor is that it
gives me property injection, so I can inject an IModuleCommands instance
into the base class without the awkward & ugly "base(moduleCommands)"
syntax. However, this problem kind of defeats that benefit... J
Best regards,
Per
--
You received this message because you are subscribed to the Google Groups
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/castle-project-users?hl=en.