IMO, i think the whole point of having scanning is to avoid being explicit. 
 if i need to use WithService.Select, which is not much more useful then 
registering everything explicitly, to get around the new semantics of 
WithAllInterfaces, then its usefulness has decreased substantially.

aside, if a user wants to register IEnumerable<ValueType> into Windsor, 
which worked before (and presumably every version prior to 3.1), why was it 
changed to not support it?  it's easy to come up with a reasonable use 
case, like a service which provides real time stock prices in the form of 
value types, exposed as IEnumerable<StockPrice>.

thx,
bling

On Wednesday, July 11, 2012 10:11:47 PM UTC-4, Krzysztof Koźmic wrote:
>
> I'm not sure I want to ignore anything. If a user wants to register 
> something they should either get it registered or should be notified it's 
> not supported.
>
> After giving it some more thoughts I'm thinking perhaps we should leave 
> the current behavior. If having IEnumerable<Something> is not your 
> intention be explicit about it and do not include it.
>
> The idea with "system interfaces" is more complicated than it seems. In 
> reality all Microsoft interfaces are in System.something namespace so 
> having a blanket arbitrary rule to filter them out built into Windsor 
> doesn't look like such a good idea after all.
>
> I think the solution I would advise and the one I'm leaning towards most 
> is to leave the behavior and API exactly as it is now, and just recommend 
> people to use WithiService.Select(be specific here) instead.
>
> @K
>
> bling wrote:
>
>
> correction: "...since i would *not* expect that to throw..."
>
> On Wednesday, July 11, 2012 9:42:25 AM UTC-4, bling wrote:
>
>     that would work.
>
>     however, i'm more questioning in the intent of the scanning
>     registration API, since i would expect that to throw any kind of
>     exception. worst case should be that you don't have something
>     registered. if that can still be the case, then you can simply
>     ignore IEnumerable<ValueType> instead of throwing.
>
>     if that won't fly, you could also do a
>     WithServiceAllInterfaces(bool excludeSystemInterfaces = true)
>
>     thx!
>
>     p.s. i've logged the bug at
>     http://issues.castleproject.org/issue/IOC-347
>     <http://issues.castleproject.org/issue/IOC-347>, although if you
>     add a new WithService* then it'd be more of a feature request.
>
>     On Tuesday, July 10, 2012 6:09:48 PM UTC-4, bling wrote:
>
>         the following works with 3.0, but throws an exception in 3.1
>
>         var c = new WindsorContainer();
>         
> c.Register(Classes.From(typeof(Dictionary<,>)).Pick().WithServiceBase().WithServiceAllInterfaces());
>
>         i'm not sure what the actual issue is, but exception message
>         complained about ICollection<KeyValuePair<,>> so i took a
>         guess and was able to reproduce. a class similar to that
>         signature does exist in my actual code.
>
>         thanks,
>         bling
>
> -- 
> You received this message because you are subscribed to the Google 
> Groups "Castle Project Users" group.
> To view this discussion on the web visit 
> https://groups.google.com/d/msg/castle-project-users/-/eTbUtzwyAZMJ.
> 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.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/castle-project-users/-/kJsk4S5RkAoJ.
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