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.

Reply via email to