Mark, the code you provided here, resolves non-generic version. In xml you register generic version of the interface. The class does not implement generic version of the interface, but it does implement non-generic version.
Krzysztof On 26 Sty, 14:54, Mark Richman <[email protected]> wrote: > It actually resolves the instance just fine. I can even step into the > implementation class' source code while debugging. I have a helper > class called "GenericTypeResolver" which I use to resolve component > instances from the container. I call the helper on this component as > follows: > > var urlsProvider = IocHelpers > .GenericTypeResolver > .ResolveInstance<IWebAdminEntityPickerEntityUrlsProvider>( > typeof (IWebAdminEntityPickerEntityUrlsProvider<>), > IocHelpers.GetTypeByAlias(firstAliasToUse) > ); > > This code always works, regardless of which Castle version I use. I > have dozens of components registered, and this > IWebAdminEntityPickerEntityUrlsProvider is the only one that seems to > be "broken" across Castle versions. I will post the source to my > helper class as well. > > Thanks, > Mark > > On Jan 26, 8:33 am, Krzysztof Ko¼mic (2) <[email protected]> wrote: > > > Mark, > > > That's what I did. You did succeed at registering the component, > > because AddComponentLifeStyle does not check if you pass valid types. > > However if you tried to resolve the component you would get an > > exception then. > > > Krzysztof > > > On 26 Sty, 14:23, Mark Richman <[email protected]> wrote: > > > > Try commenting out the <component> line in web.config, and uncomment > > > the line in Global.asax. You'll see it works fine using it that way. > > > So, what's wrong with my syntax in the web.config? This worked until I > > > upgraded Castle. > > > > On Jan 26, 8:19 am, Krzysztof Ko 1/4 mic (2) <[email protected]> wrote: > > > > > Mark, > > > > > Windsor is fine. > > > > Your class does not implement that interface. > > > > > Krzysztof > > > > > On 26 Sty, 13:48, Mark Richman <[email protected]> wrote: > > > > > > I uploaded a test website that demonstrates the issue. Please > > > > > seehttp://groups.google.com/group/castle-project-users/web/WindsorTest.zip > > > > > > Thank you! > > > > > > On Jan 26, 8:08 am, Krzysztof Ko 1/4 mic <[email protected]> > > > > > wrote: > > > > > > > were you able to create a reproduction you could post here? > > > > > > > Krzysztof > > > > > > > On 2010-01-26 02:18, Mark Richman wrote: > > > > > > > > Oddly, this imperative version works perfectly: > > > > > > > > container.AddComponentLifeStyle("entityurlsprovider.picker", > > > > > > > typeof > > > > > > > (IWebAdminEntityPickerEntityUrlsProvider<>), > > > > > > > typeof > > > > > > > (WebAdminEntityPickerEntityUrlsProvider<>), > > > > > > > LifestyleType.Transient); > > > > > > > > the declarative version still fails though...syntax error? > > > > > > > > <component id="entityurlsprovider.picker" > > > > > > > > service="KGroup.KMS.Administration.IWebAdminEntityPickerEntityUrlsProvider`1, > > > > > > > KGroup.KMS.Core" > > > > > > > > type="KGroup.KMS.Administration.Common.WebAdminEntityPickerEntityUrlsProvider`1, > > > > > > > KGroup.KMS.Core" > > > > > > > lifestyle="transient"/> > > > > > > > > Thanks, > > > > > > > Mark > > > > > > > > On Jan 25, 5:24 pm, Krzysztof Ko 1/4 > > > > > > > mic<[email protected]> > > > > > > > wrote: > > > > > > > >> By reproduction I mean a minimalistic solution that exhibits the > > > > > > >> issue. > > > > > > >> I just tried to re-create your scenario and I hate to tell you > > > > > > >> that it > > > > > > >> works on my machine. > > > > > > > >> The fact that the exception message says > > > > > > > >> Type '' > > > > > > > >> is misleading. > > > > > > >> It means you used open generic type. If the type was indeed not > > > > > > >> being > > > > > > >> found, an other exception would be thrown. > > > > > > >> Try to isolate the issue and post the solution here. > > > > > > >> At this point I can't really think of anything that could cause > > > > > > >> this issue. > > > > > > > >> Krzysztof > > > > > > > >> On 2010-01-25 23:20, Mark Richman wrote: > > > > > > > >>> What do you mean by reproduction? There is nothing I'm doing > > > > > > >>> explicitly in my code to try loading the class other than new > > > > > > >>> WindsorContainer(new XmlInterpreter()). From there, the Windsor > > > > > > >>> code > > > > > > >>> takes over and eventually throws an exception. Seems to me like > > > > > > >>> the > > > > > > >>> method for parsing the web.config<component> element may have > > > > > > >>> changed, causing an empty string to be passed as the 'type' > > > > > > >>> argument > > > > > > >>> to > > > > > > >>> Castle.Windsor.Installer.DefaultComponentInstaller.AssertImplementsService > > > > > > >>> (id,service,type). Like I mentioned, I have made zero changes > > > > > > >>> to my > > > > > > >>> code, other than replacing the Castle*.dll files. > > > > > > > >>> On Jan 25, 5:00 pm, Krzysztof Ko 1/4 > > > > > > >>> mic<[email protected]> > > > > > > >>> wrote: > > > > > > > >>>> Stack trace is not really helpful here. > > > > > > >>>> Can you create a reproduction and post it? > > > > > > >>>> This does not really seem to make much sense to me > > > > > > > >>>> Krzysztof > > > > > > > >>>> On 2010-01-25 22:42, Mark Richman wrote: > > > > > > > >>>>> Maybe this stack trace will help: > > > > > > > >>>>> [Exception: Could not set up component > > > > > > >>>>> 'entityurlsprovider.picker'. > > > > > > >>>>> Type '' does not implement service > > > > > > >>>>> 'KGroup.KMS.Administration.IWebAdminEntityPickerEntityUrlsProvider`1, > > > > > > >>>>> KGroup.KMS.Core, Version=1.0.0.0, Culture=neutral, > > > > > > >>>>> PublicKeyToken=null'] > > > > > > > >>>>> Castle.Windsor.Installer.DefaultComponentInstaller.AssertImplementsService > > > > > > >>>>> (String id, Type service, Type type) +255 > > > > > > >>>>> > > > > > > >>>>> Castle.Windsor.Installer.DefaultComponentInstaller.SetUpComponents > > > > > > >>>>> (IConfiguration[] configurations, IWindsorContainer > > > > > > >>>>> container) +348 > > > > > > >>>>> Castle.Windsor.Installer.DefaultComponentInstaller.SetUp > > > > > > >>>>> (IWindsorContainer container, IConfigurationStore store) +124 > > > > > > >>>>> Castle.Windsor.WindsorContainer.RunInstaller() +98 > > > > > > >>>>> > > > > > > >>>>> Castle.Windsor.WindsorContainer..ctor(IConfigurationInterpreter > > > > > > >>>>> interpreter) +167 > > > > > > >>>>> Global.Application_Start(Object sender, EventArgs e) > > > > > > > >>>>> On Jan 25, 4:33 pm, Mark Richman<[email protected]> > > > > > > >>>>> wrote: > > > > > > > >>>>>> I did a Clean Solution, Rebuild Solution. I even deleted the > > > > > > >>>>>> contents > > > > > > >>>>>> of /bin and rebuilt. I get the same error. > > > > > > > >>>>>> On Jan 25, 4:25 pm, Krzysztof Ko 1/4 > > > > > > >>>>>> mic<[email protected]> > > > > > > >>>>>> wrote: > > > > > > > >>>>>>> Looks like it somehow does not pick your implementation > > > > > > >>>>>>> type. Do Clean > > > > > > >>>>>>> in Visual Studio, and then Build all projects > > > > > > > >>>>>>> On 2010-01-25 22:16, Mark Richman wrote: > > > > > > > >>>>>>>> I am trying to upgrade from these versions: > > > > > > > >>>>>>>> Castle.Core 1.1.0.542 > > > > > > >>>>>>>> Castle.DynamicProxy2 2.1.0.5642 > > > > > > >>>>>>>> Castle.MicroKernel 2.0.0.5642 > > > > > > >>>>>>>> Castle.Windsor 2.0.0.5642 > > > > > > > >>>>>>>> to the current versions: > > > > > > > >>>>>>>> Castle.Core 1.2.0.6623 > > > > > > >>>>>>>> Castle.DynamicProxy2 2.2.0.6628 > > > > > > >>>>>>>> Castle.MicroKernel 2.1.0.6655 > > > > > > >>>>>>>> Castle.Windsor 2.1.0.6655 > > > > > > > >>>>>>>> I get the following exception at startup: > > > > > > > >>>>>>>> Could not set up component 'entityurlsprovider.picker'. > > > > > > >>>>>>>> Type '' does > > > > > > >>>>>>>> not implement service > > > > > > >>>>>>>> 'KGroup.KMS.Administration.IWebAdminEntityPickerEntityUrlsProvider`1, > > > > > > >>>>>>>> KGroup.KMS.Core, Version=1.0.0.0, Culture=neutral, > > > > > > >>>>>>>> PublicKeyToken=null' > > > > > > > >>>>>>>> in this line of code in Application_Start: > > > > > > > >>>>>>>> var container = new WindsorContainer(new XmlInterpreter()); > > > > > > > >>>>>>>> for this configuration: > > > > > > > >>>>>>>> <component id="entityurlsprovider.picker" > > > > > > >>>>>>>> service="KGroup.KMS.Administration.IWebAdminEntityPickerEntityUrlsProvider`1, > > > > > > >>>>>>>> KGroup.KMS.Core" > > > > > > >>>>>>>> type="KGroup.KMS.Administration.Common.WebAdminEntityPickerEntityUrlsProvider`1, > > > > > > >>>>>>>> KGroup.KMS.Core" > > > > > > >>>>>>>> lifestyle="transient"/> > > > > > > > >>>>>>>> I have not changed a single line of code, other than > > > > > > >>>>>>>> swapping out the > > > > > > >>>>>>>> dll's above and recompiling without errors. > > > > > > > >>>>>>>> Is there a breaking change I should be aware of? > > > > > > > >>>>>>>> Thanks, > > > > > > >>>>>>>> Mark > > -- 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.
