You could look at the Castle.Facilities.Logging.LoggerResolver for an
example of an implementation of the ISubDependencyResolver approach. This
uses a combination of Factory and Resolver.

- rb

On Wed, Feb 11, 2009 at 10:29 AM, Jason Meckley <[email protected]>wrote:

>
> you wouldn't pass the iwriter's dependency through the calculator, the
> calculator doesn't know the type of the iwriter.
>
> if you want to create writer at runtime, you could pass the kernel to
> calculator and have the calculator pull the iwriter from the kernel
> based on a parameter
>
> var writer = kernel.Resolve<IWriter>(key of writer to select);
> or you could create a factory object to create the calculator
>
> public class CalculatorFactory
> {
>     public ctor(IWriterRegistery registry) {...}
>
>     public Calculator Create(criteria for writer)
>     {
>            foreach(var writer in registry)
>            {
>                   if(!writer.meets(critiera) continue;
>                   return new Calculator(writer.implementation);
>            }
>     }
> }
>
> or you could resolve the writer and then resolve the calculator
> var writer = container.Resolve<IWriter>(key to writer);
> var calculator = container.Resolve<ICalculator >(writer);
>
> you could register an IWriter which is just a composite of the actual
> resolvers and place the logic there
> class AllWriters : IWriter
> {
>      ctor(IWriter first, IWriter second){...}
>
>       void dosomething()
>       {
>            if(should use first) first.dosomething();
>            else second.dosomething();
>       }
> }
>
> or you could implement your own subdependencyresolver to resolve the
> type of writer needed.
>
>
> Daniel Hölbling wrote:
> > Hello,
> >
> > I am currently facing a interesting problem with my Windsor object
> creation.
> >
> > I have a service that calculates something and then calls a Writer
> service
> > to save this calculation.
> >
> > So I have Calculator depend on IWriter through it's ctor.
> >
> > This all works.
> > But now I have a special case where I need get a Calculator that is
> hooked
> > up to a decorated IWriter that has one of it's dependencies supplied at
> > runtime.
> > In more concrete terms I try to apply a filter through the decorator, so
> I
> > need to resolve a Calculator object that depends on a Filtered IWriter
> (with
> > a runtime-supplied filter argument) and the Filter-Decorator then passes
> the
> > call on to the "real" IWriter that then goes into the DB.
> >
> > Now, container.Resolve<Calculator>(arguments) would work if I need to
> pass
> > an argument to the calculator.
> > But how do I supply the arguments to the subsequent IWriter lookup?
> >
> > Is there some way to pass arguments to subsequent resolves?
> >
> > The obvious fallback would be to simply construct that object by hand.
> But
> > that's not really ideal imo.
> >
> > Any help would be greatly appreciated.
> > greetings Daniel Hoelbling
> >
> > (PS: Sorry if this went to the list twice, I may have forgotten to change
> my
> > from field to the one registered at google)
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to