From 3576794a64eace6c3e0da2ebcd8d4a7d09f753c0 Mon Sep 17 00:00:00 2001 From: Stephan Date: Mon, 19 Dec 2016 17:37:18 +0100 Subject: [PATCH] Cleanup DI --- src/Umbraco.Core/DI/CollectionBuilderBase.cs | 13 ++++++++----- src/Umbraco.Core/DI/LightInjectExtensions.cs | 6 ++++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Core/DI/CollectionBuilderBase.cs b/src/Umbraco.Core/DI/CollectionBuilderBase.cs index 23ddda9509..51ca173aa8 100644 --- a/src/Umbraco.Core/DI/CollectionBuilderBase.cs +++ b/src/Umbraco.Core/DI/CollectionBuilderBase.cs @@ -54,11 +54,14 @@ namespace Umbraco.Core.DI var argType = typeof(IEnumerable); var ctorArgTypes = new[] { argType }; var constructor = typeof(TCollection).GetConstructor(ctorArgTypes); - if (constructor == null) throw new InvalidOperationException(); - var exprArg = Expression.Parameter(argType, "items"); - var exprNew = Expression.New(constructor, exprArg); - var expr = Expression.Lambda, TCollection>>(exprNew, exprArg); - _collectionCtor = expr.Compile(); + if (constructor != null) + { + var exprArg = Expression.Parameter(argType, "items"); + var exprNew = Expression.New(constructor, exprArg); + var expr = Expression.Lambda, TCollection>>(exprNew, exprArg); + _collectionCtor = expr.Compile(); + } + // else _collectionCtor remains null, assuming CreateCollection has been overriden // we just don't want to support re-registering collections here var registration = Container.GetAvailableService(); diff --git a/src/Umbraco.Core/DI/LightInjectExtensions.cs b/src/Umbraco.Core/DI/LightInjectExtensions.cs index c7676b02cb..2f5c4208ea 100644 --- a/src/Umbraco.Core/DI/LightInjectExtensions.cs +++ b/src/Umbraco.Core/DI/LightInjectExtensions.cs @@ -275,6 +275,12 @@ namespace Umbraco.Core.DI }, null); } + /// + /// Registers and instanciates a collection builder. + /// + /// The type of the collection builder. + /// The container. + /// The collection builder. public static TBuilder RegisterCollectionBuilder(this IServiceContainer container) { // make sure it's not already registered