Maybe we need to clarify the scenarios that driven the need for the
selector. Originally I thought about typical aop definitions of
aspects and pointcuts. An implementation of selector could read this
configuration and return the right interceptors for each pointcut.

Fabian/Krzysztof, what are your needs for it?


On Wed, Dec 17, 2008 at 7:13 AM, Krzysztof Kozmic <[email protected]> wrote:
>
> Hi,
>
> answer below
>
> Now:
> var options = new ProxyGenerationOptions ();
> options.Selector = selector;
> X x = (X) generator.CreateClassProxy (typeof (X), options, myInterceptors);
>
> Then:
> var selectingInterceptor = new SelectingInterceptor (myInterceptors, 
> selector);
> X x = (X) generator.CreateClassProxy (typeof (X), selectingInterceptor);
>
> Why is this hackish or adds complexity?
>
> I remove:
> - the requirement of a static or instance field (+ initialization)
> re: I think static would be better, then you pay the price of initialization 
> only once
>
> - the requirement of having IInterceptorSelector in the
> ProxyGenerationOptions (+ serialization, + Equals, + GetHashCode)
> re: but I think PGO is where it belongs. Also if we codegen it, it would work 
> slightly faster at runtime (no need to lookup the methodInfo, then lookup 
> interceptors for the method) Also code for serialization and Equals and GHC 
> is already there :)
>
> Another thing is, that it'd be awkward: you'd have an array of interceptors 
> in the proxy type, but keep only one interceptor in it, and all the call next 
> logic would be duplicated in it.
> It also adds an implicit contract: put any interceptors you like into the 
> CreateClassProxy, or if you want to select some of them, wrap them with 
> SelectingInterceptor. This is the kind of implicit contracts I hate Unity for.
> We might add an overload that takes just a single SelectingInterceptor but I 
> don't like the idea of adding another overload to every CreateXYZProxy method.
>
> From current implementation' perspective, your idea certainly introduces less 
> changes (virtually none, if we ditch the add-overloads idea), but in a longer 
> perspective, I think Selector on ProxyGenerationOptions would work better.
> Also, sole implementation of SelectingInterceptor would be more complicated 
> than adding support for IInterceptorSelector via code gen.
>
> what do others think? is there a third way?
>
> Best regards,
> Fabian
>
>


-- 
Cheers,
hammett
http://hammett.castleproject.org/

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Development List" 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-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to