You are correct, and that is why I am moving this feature to the component activator, where we can give a better error, and not break existing scenarios
2008/12/10 Craig Neuwirt <[EMAIL PROTECTED]> > If we disallow interfaces/abstract registrations then I think we'll make it > more difficult to do thinks like the FactorySupport does by just registering > an interface and interceptor. How would the suggested approach support > that? > > 2008/12/10 Ayende Rahien <[EMAIL PROTECTED]> > > >> >> 2008/12/10 Krzysztof Kozmic <[EMAIL PROTECTED]> >> >>> >>> How do you plan to support it without changing the kernel? >>> >> >> custom naming sub system, probably >> >> >>> >>> 1. If we were to support WCF config, I think it would be reasonable to >>> only say to the facility "use the config file" and not register the services >>> explicitly. >>> Then, with current implementation of the DefaultKernel, we have no way of >>> doing this, since Kernel checks its registered components, and if it doesnt >>> find one, it throws. >>> This all happends before event SubDependencyResolver gets a chance to be >>> called. >> >> >> We can extend the naming sub system to look for components in the wcf >> config. >> That can be done in the facility. >> >> >>> >>> >>> > I think we should only raise an error if Abstract and not and >>> interface. It is very reasonable to support only interface registrations. >>> 2. I'm not sure it's such a good idea. First, even WCF Contract can be a >>> class, not an interface (not that I'm advocating it, but WCF allows it). >>> Second, there may be other >>> situations where user may want to register virtual component, and deal >>> with it in a similar manner to WCF Facility. I think we need an opt-in >>> mechanism for that. >>> >> >> agreed, consider the case where I want to do things like IronPython >> components. >> Actually, my DSL stuff is often used that way. >> >> >>> >>> > I think we can do with the existing activator support >>> 3. Ayende, can you elaborate a little bit on that? >>> >> >> See my next commit. >> >> >>> >>> Cheers, >>> >>> Krzysztof >>> >>> >>> [EMAIL PROTECTED] 2008-12-10 15:15 >>> >>> I am trying to support this without having to change the kernel. This >>> type >>> of support sounds like a job for SubDependencyResolver, but that get >>> called >>> before the kernel is given a chance to resolve it. Do you think >>> SubDependecyResolver should come last in the resolution strategy? >>> >>> On Wed, Dec 10, 2008 at 1:05 AM, Krzysztof Koźmic < >>> [EMAIL PROTECTED]> wrote: >>> >>> > Hi, >>> > I wrote about it some time ago in the context of using WCF >>> configuration >>> > file as sole source of information for resolving WCF components. >>> > My idea was to extend the way IKernel resolves components. Right now >>> when >>> > it does not have a component registered (or we're trying to register >>> > asbtract component as you wrote) it throws. >>> > Alternatively, to support this kind of scenarios, we might extend it >>> (via >>> > facility?) that would be called in those situations (i.e. while >>> registering >>> > otherwise illegal component, or while resolving unregistered >>> component). >>> > It would require two methods: >>> > >>> > *bool CanProvide(Type componentType, string name, IKernel >>> kernel);//kernel >>> > throws when it returns false >>> > object Provide(Type componentType, string name, IKernel kernel); //OR >>> > IHandler Provide(Type componentType, string name, IKernel kernel, out >>> > IHandler[] dependencies);* >>> > >>> > This is only an initial idea and it would have to be thought through to >>> > ensure that it easily fits with other aspects of the container. >>> > >>> > This solution would be IMHO flexible enough to handle I think all of >>> WCF >>> > needs (incl, not-yet-implemented support for config file), AND would >>> easily >>> > solve the problem you described. >>> > >>> > Thoughts? >>> > >>> > >>> > Ayende Rahien pisze: >>> > >>> > I just applied a patch to detect and give a good error if we are trying >>> to >>> > register a component whose implementation is abstract. That broke the >>> WCF >>> > facility, which allow you to register just the interface, and rely on >>> the >>> > WCF machinery to provide the real implementation. >>> > Currently I "fixed" the build by making sure that the test in the code >>> > specify an implementation, but considering a common case for the WCF >>> client >>> > facility, we won't _have_ an implementation. >>> > Any suggestions for solving this? >>> > >>> > >>> > >>> > >>> > > >>> > >>> >>> >>> >>> >>> CONFIDENTIALITY NOTICE >>> This message is intended exclusively for the individual or entity to >>> which it is addressed. This communication may contain information that is >>> proprietary, privileged, confidential or otherwise legally exempt from >>> disclosure. If you are not the named addressee, you are not authorized to >>> read, print, retain, copy or disseminate this message or any part of it. If >>> you have received this message in error, please delete all copies of this >>> message and notify the sender immediately by return mail or fax ATSI >>> S.A.(+4812) 285 36 04. >>> Any email attachment may contain software viruses which could damage your >>> own computer system. Whilst reasonable precaution has been taken to minimise >>> this risk, we cannot accept liability for any damage which you sustain as a >>> result of software viruses. You should therefore carry out your own virus >>> checks before opening any attachments. >>> >>> >>> >>> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
