<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>simpleinjector Issue Tracker Rss Feed</title><link>http://simpleinjector.codeplex.com/WorkItem/List.aspx</link><description>simpleinjector Issue Tracker Rss Description</description><item><title>Closed Issue: RegisterOpenGeneric registrations incorrectly give SRP warning [19670]</title><link>http://simpleinjector.codeplex.com/workitem/19670</link><description>The following registration incorrectly warns about a Single Responsibility Warning&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96; c&amp;#35;&lt;br /&gt;var container &amp;#61; new Container&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; Consumer class contains a IGenericPlugin&amp;#60;IDisposable&amp;#62; dependency&lt;br /&gt;container.Register&amp;#60;Consumer&amp;#60;IGenericPlugin&amp;#60;IDisposable&amp;#62;&amp;#62;&amp;#62;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; Register open generic type with 6 dependencies.&lt;br /&gt;container.RegisterOpenGeneric&amp;#40;typeof&amp;#40;IGenericPlugin&amp;#60;&amp;#62;&amp;#41;,&lt;br /&gt;    typeof&amp;#40;GenericPluginWith6Dependencies&amp;#60;&amp;#62;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;Comments: Resolved with changeset 100311: Use of ResolveUnregisteredType event (that is primarily consumed by the RegisterOpenGeneric extension methods) could lead to incorrect 'Single Responsibility Violation' warnings in the Debugger Diagnostic view.</description><author>dot_NET_Junkie</author><pubDate>Sat, 04 May 2013 23:26:32 GMT</pubDate><guid isPermaLink="false">Closed Issue: RegisterOpenGeneric registrations incorrectly give SRP warning [19670] 20130504112632P</guid></item><item><title>Edited Issue: RegisterOpenGeneric registrations incorrectly give SRP warning [19670]</title><link>http://simpleinjector.codeplex.com/workitem/19670</link><description>The following registration incorrectly warns about a Single Responsibility Warning&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96; c&amp;#35;&lt;br /&gt;var container &amp;#61; new Container&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; Consumer class contains a IGenericPlugin&amp;#60;IDisposable&amp;#62; dependency&lt;br /&gt;container.Register&amp;#60;Consumer&amp;#60;IGenericPlugin&amp;#60;IDisposable&amp;#62;&amp;#62;&amp;#62;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; Register open generic type with 6 dependencies.&lt;br /&gt;container.RegisterOpenGeneric&amp;#40;typeof&amp;#40;IGenericPlugin&amp;#60;&amp;#62;&amp;#41;,&lt;br /&gt;    typeof&amp;#40;GenericPluginWith6Dependencies&amp;#60;&amp;#62;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;</description><author>dot_NET_Junkie</author><pubDate>Sat, 04 May 2013 22:38:54 GMT</pubDate><guid isPermaLink="false">Edited Issue: RegisterOpenGeneric registrations incorrectly give SRP warning [19670] 20130504103854P</guid></item><item><title>Created Issue: RegisterOpenGeneric registrations incorrectly give SRP warning [19670]</title><link>http://simpleinjector.codeplex.com/workitem/19670</link><description>The following registration incorrectly warns about a Single Responsibility Warning&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96; c&amp;#35;&lt;br /&gt;var container &amp;#61; new Container&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; Consumer class contains a IGenericPlugin&amp;#60;IDisposable&amp;#62; dependency&lt;br /&gt;container.Register&amp;#60;Consumer&amp;#60;IGenericPlugin&amp;#60;IDisposable&amp;#62;&amp;#62;&amp;#62;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; Register open generic type with 6 dependencies.&lt;br /&gt;container.RegisterOpenGeneric&amp;#40;typeof&amp;#40;IGenericPlugin&amp;#60;&amp;#62;&amp;#41;,&lt;br /&gt;    typeof&amp;#40;GenericPluginWith6Dependencies&amp;#60;&amp;#62;&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;</description><author>dot_NET_Junkie</author><pubDate>Sat, 04 May 2013 22:38:53 GMT</pubDate><guid isPermaLink="false">Created Issue: RegisterOpenGeneric registrations incorrectly give SRP warning [19670] 20130504103853P</guid></item><item><title>Closed Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634]</title><link>http://simpleinjector.codeplex.com/workitem/19634</link><description>I&amp;#39;m getting an empty result set when I use GetAllInstances&amp;#60;T&amp;#62;&amp;#40;&amp;#41; while making the same call GetInstance&amp;#60;T&amp;#62; I get one result &amp;#40;which is correct&amp;#41;. &lt;br /&gt;&lt;br /&gt;Not sure what to make of it, or how to present a sample code that will demonstrate the issue. Any suggestions in how to present that to you&amp;#63;&lt;br /&gt;Comments: By design. Instances can only be resolved using GetAllInstances when they are registered using RegisterAll.</description><author>dot_NET_Junkie</author><pubDate>Wed, 24 Apr 2013 18:51:40 GMT</pubDate><guid isPermaLink="false">Closed Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634] 20130424065140P</guid></item><item><title>Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634]</title><link>http://simpleinjector.codeplex.com/workitem/19634</link><description>I&amp;#39;m getting an empty result set when I use GetAllInstances&amp;#60;T&amp;#62;&amp;#40;&amp;#41; while making the same call GetInstance&amp;#60;T&amp;#62; I get one result &amp;#40;which is correct&amp;#41;. &lt;br /&gt;&lt;br /&gt;Not sure what to make of it, or how to present a sample code that will demonstrate the issue. Any suggestions in how to present that to you&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: vtali ** &lt;p&gt;Thank you! I appreciate the response and the help. You need a donate button. &lt;/p&gt;</description><author>vtali</author><pubDate>Wed, 24 Apr 2013 18:11:59 GMT</pubDate><guid isPermaLink="false">Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634] 20130424061159P</guid></item><item><title>Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634]</title><link>http://simpleinjector.codeplex.com/workitem/19634</link><description>I&amp;#39;m getting an empty result set when I use GetAllInstances&amp;#60;T&amp;#62;&amp;#40;&amp;#41; while making the same call GetInstance&amp;#60;T&amp;#62; I get one result &amp;#40;which is correct&amp;#41;. &lt;br /&gt;&lt;br /&gt;Not sure what to make of it, or how to present a sample code that will demonstrate the issue. Any suggestions in how to present that to you&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: dot_NET_Junkie ** &lt;p&gt;You currently use the following registration:&lt;/p&gt;&lt;p&gt;```&lt;br&gt;container.RegisterManyForOpenGeneric(&lt;br&gt;    typeof(IDomainEventHandler&amp;lt;&amp;gt;), &lt;br&gt;    currentAssemblies);&lt;br&gt;```&lt;/p&gt;&lt;p&gt;this leads to a one-to-one mapping between of a closed IDomainEventHandler&amp;lt;T&amp;gt; version (the service type) and an implementation. The RegisterManyForOpenGeneric is a short cut for doing this:&lt;/p&gt;&lt;p&gt;```&lt;br&gt;container.Register&amp;lt;IDomainEventHandler&amp;lt;CustomerMoved&amp;gt;&amp;gt;, CustomerMovedEventHandler&amp;gt;();&lt;br&gt;container.Register&amp;lt;IDomainEventHandler&amp;lt;OrderShipped&amp;gt;&amp;gt;, OrderShippedEventHandler&amp;gt;();&lt;br&gt;container.Register&amp;lt;IDomainEventHandler&amp;lt;OrderCancelled&amp;gt;&amp;gt;, OrderCancelledEventHandler&amp;gt;();&lt;br&gt;// etc&lt;br&gt;```&lt;/p&gt;&lt;p&gt;In other words, when calling RegisterManyForOpenGeneric, this method simply calls Register(Type, Type) for you under the covers. Since there is a one-to-one mapping, you need to resolve an event handler as follows:&lt;/p&gt;&lt;p&gt;```&lt;br&gt;container.GetInstance&amp;lt;IDomainEventHandler&amp;lt;OrderCancelled&amp;gt;&amp;gt;();&lt;br&gt;```&lt;/p&gt;&lt;p&gt;Simple injector forces you to make an explicit choice between registering a collection, or a single instance. When your application contains multiple event handlers for the same event, the previous RegisterManyForOpenGeneric registration will simply throw an exception. It throws an exception just as doing this manually will throw an exception:&lt;/p&gt;&lt;p&gt;```&lt;br&gt;container.Register&amp;lt;IDomainEventHandler&amp;lt;OrderCancelled&amp;gt;&amp;gt;, MailCustomerOrderCancelledEventHandler&amp;gt;();&lt;br&gt;// Second registration on same type: simple injector throws an exception.&lt;br&gt;container.Register&amp;lt;IDomainEventHandler&amp;lt;OrderCancelled&amp;gt;&amp;gt;, InformShipperOrderCancelledEventHandler&amp;gt;();&lt;br&gt;```&lt;/p&gt;&lt;p&gt;In that case you will have to registering event types as collection, using the RegisterAll method in combination with one of the RegisterManyForOpenGeneric overloads:&lt;/p&gt;&lt;p&gt;```&lt;br&gt;container.RegisterManyForOpenGeneric(&lt;br&gt;    typeof(ICommandHandler&amp;lt;&amp;gt;),&lt;br&gt;    (service, impls) =&amp;gt; container.RegisterAll(service, impls),&lt;br&gt;    currentAssemblies);&lt;br&gt;```&lt;/p&gt;&lt;p&gt;Since the registration now happens using RegisterAll, you can now retrieve collections as follows:&lt;/p&gt;&lt;p&gt;```&lt;br&gt;var collection = container.GetAllInstances&amp;lt;IDomainEventHandler&amp;lt;OrderCancelled&amp;gt;&amp;gt;();&lt;br&gt;```&lt;/p&gt;</description><author>dot_NET_Junkie</author><pubDate>Wed, 24 Apr 2013 17:38:55 GMT</pubDate><guid isPermaLink="false">Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634] 20130424053855P</guid></item><item><title>Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634]</title><link>http://simpleinjector.codeplex.com/workitem/19634</link><description>I&amp;#39;m getting an empty result set when I use GetAllInstances&amp;#60;T&amp;#62;&amp;#40;&amp;#41; while making the same call GetInstance&amp;#60;T&amp;#62; I get one result &amp;#40;which is correct&amp;#41;. &lt;br /&gt;&lt;br /&gt;Not sure what to make of it, or how to present a sample code that will demonstrate the issue. Any suggestions in how to present that to you&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: vtali ** &lt;p&gt;&amp;gt;    var handlers = serviceLocator.GetAll&amp;lt;IDomainEventHandler&amp;lt;TDomainEvent&amp;gt;&amp;gt;();&lt;/p&gt;&lt;p&gt;Is my wrapper that calls this inside the method: &lt;/p&gt;&lt;p&gt;&amp;gt; current.GetAllInstances&amp;lt;T&amp;gt;();&lt;/p&gt;&lt;p&gt;Sorry for the confusion.&lt;/p&gt;</description><author>vtali</author><pubDate>Wed, 24 Apr 2013 14:23:14 GMT</pubDate><guid isPermaLink="false">Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634] 20130424022314P</guid></item><item><title>Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634]</title><link>http://simpleinjector.codeplex.com/workitem/19634</link><description>I&amp;#39;m getting an empty result set when I use GetAllInstances&amp;#60;T&amp;#62;&amp;#40;&amp;#41; while making the same call GetInstance&amp;#60;T&amp;#62; I get one result &amp;#40;which is correct&amp;#41;. &lt;br /&gt;&lt;br /&gt;Not sure what to make of it, or how to present a sample code that will demonstrate the issue. Any suggestions in how to present that to you&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: vtali ** &lt;p&gt;That's definitely the behavior I'm seeing and I didn't realize it. Here is the code that is making use of it: &lt;/p&gt;&lt;p&gt;    public class DomainEvents : IDomainEvents&lt;br&gt;    {&lt;br&gt;        private readonly IServiceLocator serviceLocator;&lt;/p&gt;&lt;p&gt;        public DomainEvents(IServiceLocator serviceLocator)&lt;br&gt;        {&lt;br&gt;            this.serviceLocator = serviceLocator;&lt;br&gt;        }&lt;/p&gt;&lt;p&gt;        public void Raise&amp;lt;TDomainEvent&amp;gt;(TDomainEvent domainEvent) where TDomainEvent : IDomainEvent&lt;br&gt;        {&lt;br&gt;            var handlers = serviceLocator.GetAll&amp;lt;IDomainEventHandler&amp;lt;TDomainEvent&amp;gt;&amp;gt;();&lt;br&gt;            foreach (var eventHandler in handlers)&lt;br&gt;            {&lt;br&gt;                eventHandler.Handle(domainEvent);&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;    }&lt;/p&gt;&lt;p&gt;&lt;br&gt;What's the appropriate way of retrieving all the registrations of that service type?&lt;/p&gt;</description><author>vtali</author><pubDate>Wed, 24 Apr 2013 14:15:33 GMT</pubDate><guid isPermaLink="false">Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634] 20130424021533P</guid></item><item><title>Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634]</title><link>http://simpleinjector.codeplex.com/workitem/19634</link><description>I&amp;#39;m getting an empty result set when I use GetAllInstances&amp;#60;T&amp;#62;&amp;#40;&amp;#41; while making the same call GetInstance&amp;#60;T&amp;#62; I get one result &amp;#40;which is correct&amp;#41;. &lt;br /&gt;&lt;br /&gt;Not sure what to make of it, or how to present a sample code that will demonstrate the issue. Any suggestions in how to present that to you&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: dot_NET_Junkie ** &lt;p&gt;I don't see any registrations in your configuration that are made using one of the `RegisterAll&amp;lt;T&amp;gt;` overloads. Only registration made with one of these methods or using `Register&amp;lt;IEnumerable&amp;lt;Something&amp;gt;&amp;gt;` will be resolved when calling `GetAllInstances&amp;lt;T&amp;gt;`. The default behavior of Simple Injector is to return an empty collection when no collection is registered for the given T.&lt;/p&gt;</description><author>dot_NET_Junkie</author><pubDate>Wed, 24 Apr 2013 13:28:07 GMT</pubDate><guid isPermaLink="false">Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634] 20130424012807P</guid></item><item><title>Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634]</title><link>http://simpleinjector.codeplex.com/workitem/19634</link><description>I&amp;#39;m getting an empty result set when I use GetAllInstances&amp;#60;T&amp;#62;&amp;#40;&amp;#41; while making the same call GetInstance&amp;#60;T&amp;#62; I get one result &amp;#40;which is correct&amp;#41;. &lt;br /&gt;&lt;br /&gt;Not sure what to make of it, or how to present a sample code that will demonstrate the issue. Any suggestions in how to present that to you&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: vtali ** &lt;p&gt;Definitely. Here's my App_Start.SimpleInjectorWebCommon class that registers all my services:&lt;/p&gt;&lt;p&gt;```&lt;br&gt;private static void RegisterServices(Container container)&lt;br&gt;        {&lt;br&gt;            var serviceLocatorResolver = new SimpleInjectorServiceLocator(container);&lt;br&gt;            ServiceLocator.SetServiceLocator(() =&amp;gt; serviceLocatorResolver);&lt;/p&gt;&lt;p&gt;            var currentAssemblies = AppDomain.CurrentDomain.GetAssemblies();&lt;/p&gt;&lt;p&gt;            // Validations&lt;br&gt;            container.RegisterSingle&amp;lt;IValidator&amp;gt;(&lt;br&gt;                new DataAnnotationsValidator(container));&lt;/p&gt;&lt;p&gt;            // Command Validations&lt;br&gt;            container.RegisterManyForOpenGeneric(&lt;br&gt;                typeof(ICommandValidator&amp;lt;&amp;gt;), currentAssemblies);&lt;/p&gt;&lt;p&gt;            container.RegisterSingleOpenGeneric(&lt;br&gt;                typeof(ICommandValidator&amp;lt;&amp;gt;), typeof(CommandValidator&amp;lt;&amp;gt;));&lt;/p&gt;&lt;p&gt;            // Events&lt;br&gt;            container.RegisterManyForOpenGeneric(&lt;br&gt;                typeof(IDomainEventHandler&amp;lt;&amp;gt;),&lt;br&gt;                currentAssemblies&lt;br&gt;                );&lt;/p&gt;&lt;p&gt;            container.RegisterSingle(&lt;br&gt;                typeof(IDomainEvents),&lt;br&gt;                () =&amp;gt; new DomainEvents(serviceLocatorResolver)&lt;br&gt;                );&lt;/p&gt;&lt;p&gt;            // authorizations  &lt;br&gt;            // register first concrete&lt;br&gt;            container.RegisterManyForOpenGeneric(&lt;br&gt;                typeof(ICommandAuthorize&amp;lt;&amp;gt;),&lt;br&gt;                currentAssemblies);&lt;/p&gt;&lt;p&gt;            // then those not yet registered, register with default&lt;br&gt;            container.RegisterSingleOpenGeneric(&lt;br&gt;                typeof(ICommandAuthorize&amp;lt;&amp;gt;),&lt;br&gt;                typeof(CommandAuthorizeDefault&amp;lt;&amp;gt;));&lt;/p&gt;&lt;p&gt;&lt;br&gt;            // Db work factories&lt;br&gt;            container.RegisterSingle&amp;lt;IUnitOfWorkFactory&amp;lt;CompaniesUnitOfWork&amp;gt;, CompaniesUnitOfWorkFactory&amp;gt;();&lt;/p&gt;&lt;p&gt;            container.RegisterPerWebRequest&amp;lt;ICompanyContextResolver, SubDomainCompanyContextResolver&amp;gt;();&lt;/p&gt;&lt;p&gt;            container.RegisterSingle&amp;lt;IUnitOfWorkFactory&amp;lt;PointsUnitOfWork&amp;gt;, PointsUnitOfWorkFactory&amp;gt;();&lt;/p&gt;&lt;p&gt;            container.RegisterManyForOpenGeneric(&lt;br&gt;             typeof(IQueryHandler&amp;lt;,&amp;gt;),&lt;br&gt;             AppDomain.CurrentDomain.GetAssemblies());&lt;/p&gt;&lt;p&gt;&lt;br&gt;            container.RegisterSingle&amp;lt;IPasswordService, PasswordServiceSha256&amp;gt;();&lt;/p&gt;&lt;p&gt;            // Command Handlers&lt;br&gt;            container.RegisterManyForOpenGeneric(&lt;br&gt;                typeof(ICommandHandler&amp;lt;&amp;gt;), currentAssemblies);&lt;/p&gt;&lt;p&gt;            container.RegisterDecorator(&lt;br&gt;                typeof(ICommandHandler&amp;lt;&amp;gt;),&lt;br&gt;                typeof(ValidationCommandHandlerDecorator&amp;lt;&amp;gt;));&lt;/p&gt;&lt;p&gt;            container.RegisterDecorator(&lt;br&gt;                typeof(ICommandHandler&amp;lt;&amp;gt;),&lt;br&gt;                typeof(TransactionCommandHandlerDecorator&amp;lt;&amp;gt;));&lt;/p&gt;&lt;p&gt;            container.RegisterDecorator(&lt;br&gt;                typeof(ICommandHandler&amp;lt;&amp;gt;),&lt;br&gt;                typeof(AuthorizationCommandHandlerDecorator&amp;lt;&amp;gt;)&lt;br&gt;                );&lt;/p&gt;&lt;p&gt;&lt;br&gt;            // Not needed yet&lt;br&gt;            //container.RegisterDecorator(&lt;br&gt;            //    typeof(ICommandHandler&amp;lt;&amp;gt;),&lt;br&gt;            //    typeof(PerformanceTimerCommandHandlerDecorator&amp;lt;&amp;gt;));&lt;/p&gt;&lt;p&gt;&lt;br&gt;            container.RegisterMvcAttributeFilterProvider();&lt;br&gt;            container.Verify();&lt;br&gt;        }&lt;br&gt;```&lt;/p&gt;</description><author>vtali</author><pubDate>Wed, 24 Apr 2013 12:43:48 GMT</pubDate><guid isPermaLink="false">Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634] 20130424124348P</guid></item><item><title>Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634]</title><link>http://simpleinjector.codeplex.com/workitem/19634</link><description>I&amp;#39;m getting an empty result set when I use GetAllInstances&amp;#60;T&amp;#62;&amp;#40;&amp;#41; while making the same call GetInstance&amp;#60;T&amp;#62; I get one result &amp;#40;which is correct&amp;#41;. &lt;br /&gt;&lt;br /&gt;Not sure what to make of it, or how to present a sample code that will demonstrate the issue. Any suggestions in how to present that to you&amp;#63;&lt;br /&gt;Comments: ** Comment from web user: dot_NET_Junkie ** &lt;p&gt;Can you show how your registration looks like?&lt;/p&gt;</description><author>dot_NET_Junkie</author><pubDate>Wed, 24 Apr 2013 07:08:51 GMT</pubDate><guid isPermaLink="false">Commented Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634] 20130424070851A</guid></item><item><title>Created Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634]</title><link>http://simpleinjector.codeplex.com/workitem/19634</link><description>I&amp;#39;m getting an empty result set when I use GetAllInstances&amp;#60;T&amp;#62;&amp;#40;&amp;#41; while making the same call GetInstance&amp;#60;T&amp;#62; I get one result &amp;#40;which is correct&amp;#41;. &lt;br /&gt;&lt;br /&gt;Not sure what to make of it, or how to present a sample code that will demonstrate the issue. Any suggestions in how to present that to you&amp;#63;&lt;br /&gt;</description><author>vtali</author><pubDate>Wed, 24 Apr 2013 01:39:02 GMT</pubDate><guid isPermaLink="false">Created Issue: GetInstance&lt;T&gt; works while GetAllInstances&lt;T&gt; does not [19634] 20130424013902A</guid></item><item><title>Edited Feature: Generate and compile collections more lazily [19601]</title><link>http://simpleinjector.codeplex.com/workitem/19601</link><description>When a collection is requested for the first time, the expression trees for all items are generated, the expressions intercepted and any possible decorator applied for each item in the collection. This can have a big impact on performance if the collection contains many items and all you need is to retrieve a single item of that collection &amp;#40;using the index of the collection&amp;#39;s IList&amp;#60;T&amp;#62; implementation for instance&amp;#41;.&lt;br /&gt;&lt;br /&gt;Instead, the container should do this processing later, at the last responsible moment, which is when that item is requested for the first time. This gives pay-for-play behavior.&lt;br /&gt;&lt;br /&gt;Of course this only applies when Container.Verify&amp;#40;&amp;#41; was never called, because this ensures all collections are &amp;#39;pre compiled&amp;#39;.&lt;br /&gt;</description><author>dot_NET_Junkie</author><pubDate>Tue, 16 Apr 2013 15:36:23 GMT</pubDate><guid isPermaLink="false">Edited Feature: Generate and compile collections more lazily [19601] 20130416033623P</guid></item><item><title>Created Feature: Generate and compile collections more lazily [19601]</title><link>http://simpleinjector.codeplex.com/workitem/19601</link><description>When a collection is requested for the first time, the expression trees for all items are generated, the expressions intercepted and any possible decorator applied for each item in the collection. This can have a big impact on performance if the collection contains many items and all you need is to retrieve a single item of that collection &amp;#40;using the index of the collection&amp;#39;s IList&amp;#60;T&amp;#62; implementation for instance&amp;#41;.&lt;br /&gt;&lt;br /&gt;Instead, the container should do this processing later, at the last responsible moment, which is when that item is requested for the first time. This gives pay-for-play behavior.&lt;br /&gt;&lt;br /&gt;Of course this only applies when Container.Verify&amp;#40;&amp;#41; was never called, because this ensures all collections are &amp;#39;pre compiled&amp;#39;.&lt;br /&gt;</description><author>dot_NET_Junkie</author><pubDate>Tue, 16 Apr 2013 15:36:23 GMT</pubDate><guid isPermaLink="false">Created Feature: Generate and compile collections more lazily [19601] 20130416033623P</guid></item><item><title>Commented Issue: NuGet SimpleInjector.Integration.Web: Use WebActivatorEx instead of WebActivator [19598]</title><link>http://simpleinjector.codeplex.com/workitem/19598</link><description>It is preferable to use the WebActivatorEx package over WebActivator since the latter is not signed.&lt;br /&gt;&lt;br /&gt;The API&amp;#39;s of both packages are the same.&lt;br /&gt;Comments: ** Comment from web user: dot_NET_Junkie ** &lt;p&gt;Here is a [related issue](https://simpleinjector.codeplex.com/workitem/19358) about this. Please read the comments.&lt;/p&gt;&lt;p&gt;The bottom line is, (from Simple Injector 2.0 and up) only the quick start packages contain a reference to the unsigned WebActivator. None of the shipped DLLs take a dependency on WebActivator. Replacing WebActivator with WebActivatorEx in those quick start packages will unfortunately cause a compile error. On the other hand,  manually replacing WebActivator with WebActivatorEx is very easy to do and only a very few developers actually need to use a strongly signed version.&lt;/p&gt;&lt;p&gt;Because of this we decided to stick with the old WebActivator.&lt;/p&gt;</description><author>dot_NET_Junkie</author><pubDate>Mon, 15 Apr 2013 10:20:57 GMT</pubDate><guid isPermaLink="false">Commented Issue: NuGet SimpleInjector.Integration.Web: Use WebActivatorEx instead of WebActivator [19598] 20130415102057A</guid></item><item><title>Created Issue: NuGet SimpleInjector.Integration.Web: Use WebActivatorEx instead of WebActivator [19598]</title><link>http://simpleinjector.codeplex.com/workitem/19598</link><description>It is preferable to use the WebActivatorEx package over WebActivator since the latter is not signed.&lt;br /&gt;&lt;br /&gt;The API&amp;#39;s of both packages are the same.&lt;br /&gt;</description><author>Sebazzz</author><pubDate>Mon, 15 Apr 2013 09:22:58 GMT</pubDate><guid isPermaLink="false">Created Issue: NuGet SimpleInjector.Integration.Web: Use WebActivatorEx instead of WebActivator [19598] 20130415092258A</guid></item><item><title>Closed Issue: Decorated collections are not verified correctly [19596]</title><link>http://simpleinjector.codeplex.com/workitem/19596</link><description>When the Container.Verify&amp;#40;&amp;#41; method is called it iterates the initial registered collection, but not the actual collection that will be returned by the container. This differs when decorators are applied to the collection. In other words, Verify&amp;#40;&amp;#41; does not check the creation of the decorators &amp;#40;and their dependencies&amp;#41;, but only the original types.&lt;br /&gt;Comments: Resolved with changeset 99944: Bug fix: Verify only checked the original registration of collections and not whether the final collection (that could be intercepted and decorated) worked as expected.</description><author>dot_NET_Junkie</author><pubDate>Sat, 13 Apr 2013 13:42:58 GMT</pubDate><guid isPermaLink="false">Closed Issue: Decorated collections are not verified correctly [19596] 20130413014258P</guid></item><item><title>Edited Issue: Decorated collections are not verified correctly [19596]</title><link>http://simpleinjector.codeplex.com/workitem/19596</link><description>When the Container.Verify&amp;#40;&amp;#41; method is called it iterates the initial registered collection, but not the actual collection that will be returned by the container. This differs when decorators are applied to the collection. In other words, Verify&amp;#40;&amp;#41; does not check the creation of the decorators &amp;#40;and their dependencies&amp;#41;, but only the original types.&lt;br /&gt;</description><author>dot_NET_Junkie</author><pubDate>Sat, 13 Apr 2013 13:41:52 GMT</pubDate><guid isPermaLink="false">Edited Issue: Decorated collections are not verified correctly [19596] 20130413014152P</guid></item><item><title>Created Issue: Decorated collections are not verified correctly [19596]</title><link>http://simpleinjector.codeplex.com/workitem/19596</link><description>When the Container.Verify&amp;#40;&amp;#41; method is called it iterates the initial registered collection, but not the actual collection that will be returned by the container. This differs when decorators are applied to the collection. In other words, Verify&amp;#40;&amp;#41; does not check the creation of the decorators &amp;#40;and their dependencies&amp;#41;, but only the original types.&lt;br /&gt;</description><author>dot_NET_Junkie</author><pubDate>Sat, 13 Apr 2013 13:41:51 GMT</pubDate><guid isPermaLink="false">Created Issue: Decorated collections are not verified correctly [19596] 20130413014151P</guid></item><item><title>Commented Feature: Make container controlled collections indexible [19575]</title><link>http://simpleinjector.codeplex.com/workitem/19575</link><description>Container controlled collections are collections with items that are created and controlled by the container. The following is an example of a registration of a container controlled collection&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96; c&amp;#35;&lt;br /&gt;container.RegisterAll&amp;#60;ILogger&amp;#62;&amp;#40;typeof&amp;#40;DbLogger&amp;#41;, typeof&amp;#40;FileLogger&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;&lt;br /&gt;Compared to the following registration of an uncontrolled collection&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96; c&amp;#35;&lt;br /&gt;IEnumerable&amp;#60;ILogger&amp;#62; loggers &amp;#61; GetLoggers&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;container.RegisterAll&amp;#60;ILogger&amp;#62;&amp;#40;loggers&amp;#41;&amp;#59;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;&lt;br /&gt;Container controlled collections have known size and the order of the items is deterministic &amp;#40;which is the same order as they are registered&amp;#41;, while uncontrolled collections could change during the lifetime of the application. &lt;br /&gt;&lt;br /&gt;Retrieving a certain element of the list using a controlled collection however is an O&amp;#40;n&amp;#41; operation and forces the creation of all other elements in the list. For instance&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96; c&amp;#35;&lt;br /&gt;var loggers &amp;#61; container.GetAllInstances&amp;#60;ILogger&amp;#62;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;var logger &amp;#61; loggers.Skip&amp;#40;1&amp;#41;.First&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;This forces the creation of the of the first item in the list as well. This is probable not a problem for a list of a few items &amp;#40;especially when they&amp;#39;re singletons&amp;#41;, but will hinder performance when applied to a big list of types. For instance&amp;#58;&lt;br /&gt;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96; c&amp;#35;&lt;br /&gt;var types &amp;#61; &amp;#40;&lt;br /&gt;    from type in Assembly.GetExecutingAssembly&amp;#40;&amp;#41;.GetExportedTypes&amp;#40;&amp;#41;&lt;br /&gt;    where typeof&amp;#40;IController&amp;#41;.IsAssignableFrom&amp;#40;type&amp;#41;&lt;br /&gt;    where &amp;#33;type.IsAbstract&lt;br /&gt;    select type&amp;#41;&lt;br /&gt;    .ToList&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;container.RegisterAll&amp;#60;IController&amp;#62;&amp;#40;types&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; By registering all controllers in a collection instead of by their&lt;br /&gt;&amp;#47;&amp;#47; concrete type, we can apply decorators to those controllers.&lt;br /&gt;container.RegisterDecorator&amp;#40;typeof&amp;#40;IController&amp;#41;, &lt;br /&gt;    typeof&amp;#40;ValidationControllerDecorator&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; Inside a custom controller factory&lt;br /&gt;var set &amp;#61; types.ToDictionary&amp;#40;t &amp;#61;&amp;#62; t, t &amp;#61;&amp;#62; types.IndexOf&amp;#40;t&amp;#41;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;var controllers &amp;#61; container.GetAllInstances&amp;#60;IController&amp;#62;&amp;#40;&amp;#41;&amp;#59;&lt;br /&gt;&lt;br /&gt;int index &amp;#61; set&amp;#91;typeof&amp;#40;HomeController&amp;#41;&amp;#93;&amp;#59;&lt;br /&gt;&lt;br /&gt;&amp;#47;&amp;#47; This line currently throws an exception since IList&amp;#60;T&amp;#62; is not&lt;br /&gt;&amp;#47;&amp;#47; implemented, which disallows resolving a single item from the list.&lt;br /&gt;return &amp;#40;&amp;#40;IList&amp;#60;IController&amp;#62;&amp;#41;controllers&amp;#41;&amp;#91;index&amp;#93;&amp;#59;&lt;br /&gt;&amp;#96;&amp;#96;&amp;#96;&lt;br /&gt;Comments: Associated with changeset 99911: Bug fix. The set_Item (indexer) of DecoratableEnumerable did not throw an exception but failed silently.</description><author>dot_NET_Junkie</author><pubDate>Fri, 12 Apr 2013 14:42:46 GMT</pubDate><guid isPermaLink="false">Commented Feature: Make container controlled collections indexible [19575] 20130412024246P</guid></item></channel></rss>