Belvasis, you assume that my decorated implementation is a generic
class, which it is not. In fact, I have many different repositories
implementing IWriteRepository<>, each for a different entity type
(e.g., DocumentRepository : IWriteRepository<Document>).  So I think
your suggestion will not work.


Joni

On Mar 8, 8:52 pm, Belvasis <[email protected]> wrote:
> since there are two IWriteRepository<T> Implementations it will not work
> with this
> configuration. Using XML it is easy to do this. I don't know the fluent API
> but
> i think there is a way to configure the key and the dependencies. So in the
> end
> and you can use container.Resolve<IWriteRepository<Document>>("repository"),
> where
> the SecurityRepositoryDecorator has the id="repository".
> In XML it would look like this
>
>     <component
>         id="repository"
>     service="Definition.IWriteRepository`1, Definition"
>         type="DecoratorImpl.SecurityRepositoryDecorator`1, DecoratorImpl"
>         lifestyle="transient">
>         <parameters>
>             <Inner>${registry_impl}</Inner>
>         </parameters>
>     </component>
>     <component
>         id="registry_Impl"
>     service="Definition.IRepository`1, Definition"
>         type="NHibernateImpl.NHibernateRepository`1, NHibernateImpl"
>         lifestyle="transient">
>     </component>
>
> 2010/3/8 Krzysztof Koźmic <[email protected]>
>
> >http://stw.castleproject.org/Windsor.Decorators.ashx
> >http://ayende.com/Blog/archive/2008/10/05/windsor-ihandlerselector.aspx
>
> > On 3/8/2010 6:47 PM, joniba wrote:
>
> >> Hi Krzysztof, how would implementing the IHandlerSelector help me? How
> >> will I differentiate between the initial call to (continuing the
> >> example)
>
> >> container.Resolve<IWriteRepository<Document>>()
>
> >> With castle windsor's internal attempt to resolve the
> >> SecurityRepositoryDecorator's "inner" parameter?
>
> >> Thanks
> >> Joni
>
> >> On Mar 8, 7:17 pm, Krzysztof Koźmic<[email protected]>
> >> wrote:
>
> >>> use IHandlerSelector
>
> >>> On 3/8/2010 5:59 PM, joniba wrote:
>
> >>>> Hi all, I'm trying to use Castle Windsor to implement decorator
> >>>> chains, as per Ayende's msdn post. However, I'm using the fluent API,
> >>>> and I want to know if it can be done en masse.
>
> >>>> Without the decorators I have:
>
> >>>> container.Register
> >>>>                  (
> >>>>                      AllTypes.FromAssembly(assembly)
> >>>>                      .IncludeNonPublicTypes()
>
> >>>>  .BasedOn(typeof(IWriteRepository<>)).WithService.Base()
> >>>>                      .Configure(component =>
> >>>> component.LifeStyle.Transient)
> >>>>                  );
>
> >>>> (Which works fine.)
> >>>> My decorators also implement IWriteRepository<T>, and take as the
> >>>> inner, an IWriteRepository<T>. For example:
>
> >>>> public class SecurityRepositoryDecorator<TEntity>    :
> >>>> IWriteRepository<TEntity>
> >>>>      {
> >>>>          private IWriteRepository<TEntity>    inner;
>
> >>>>          public SecurityRepositoryDecorator(IWriteRepository<TEntity>
> >>>> inner)
> >>>>          {
> >>>>              this.inner = inner;
> >>>>          }
> >>>>      }
>
> >>>> Is this impossible because of a circular reference to
> >>>> IWriteRepository<>?
> >>>> I would like to get to:
>
> >>>> var repository = container.Resolve<IWriteRepository<Document>>();
>
> >>>> And have this return a SecurityRepositoryDecorator wrapping a
> >>>> DocumentRepository.
> >>>> Any ideas are appreciated.
>
> >>>> Joni
>
> > --
> > 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]<castle-project-users%[email protected]>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/castle-project-users?hl=en.

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