> ## Content Index
> Fetch the complete content index at: https://blog.tsd.digital/llms.txt
> Use this file to discover other available public pages before exploring further.

# Can't register services with LightInject in Umbraco - The non-generic method 'Composition.Register(Type, Lifetime)' cannot be used with type arguments
- URL: https://blog.tsd.digital/cant-register-services-with-lightinject-in-umbraco-the-non-generic-method-compositionregister-type-lifetime-cannot-be-used-with-type-arguments/
- Published: 2019-05-15T09:24:52.000Z
- Updated: 2019-05-15T09:24:52.000Z
- Author: Tim Gaunt
- Tags: Umbraco, Dependency Injection, How To, #Import 2025-04-01 05:38

We've generally used Autofac as our go to dependency injection container in Umbraco but we like to keep projects as lean as possible so wanted to start using LightInject for Umbraco V8 projects but hit a silly error this morning which took a while to track down.

Nearly all the documentation online suggests you simply implement IUserComposer as follows and Umbraco will pick it up and all will be good in the world:

```csharp
public class SomeComposer : IUserComposer
{
    public void Compose(Composition composition)
    {
        composition.Register<ISomeService, SomeService>();
    }
}
```

The thing snag that caught us out though was although we had included Umbraco.Core.Composing for IUserComposer and that gave us access to composition.Register, it was complaining

```plain
The non-generic method 'Composition.Register(Type, Lifetime)' cannot be used with type arguments
```

When using the interfaces in the controllers we were then getting:

```plain
Server Error in '/' Application.
Missing public constructor for Type: xxx
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Missing public constructor for Type: xxx

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[InvalidOperationException: Missing public constructor for Type: xxx]
   LightInject.MostResolvableConstructorSelector.Execute(Type implementingType) in C:\projects\lightinject\src\LightInject\LightInject.cs:5561
   LightInject.TypeConstructionInfoBuilder.Execute(Registration registration) in C:\projects\lightinject\src\LightInject\LightInject.cs:5719
   System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) +72
   LightInject.ConstructionInfoProvider.GetConstructionInfo(Registration registration) in C:\projects\lightinject\src\LightInject\LightInject.cs:5779
   LightInject.ServiceContainer.EmitNewInstance(ServiceRegistration serviceRegistration, IEmitter emitter) in C:\projects\lightinject\src\LightInject\LightInject.cs:4026
   LightInject.ServiceContainer.EmitNewInstanceWithDecorators(ServiceRegistration serviceRegistration, IEmitter emitter) in C:\projects\lightinject\src\LightInject\LightInject.cs:3929
   LightInject.<>c__DisplayClass197_0.b__0(IEmitter methodSkeleton) in C:\projects\lightinject\src\LightInject\LightInject.cs:4646
   LightInject.<>c__DisplayClass153_0.b__0(IEmitter ms) in C:\projects\lightinject\src\LightInject\LightInject.cs:3856
   LightInject.<>c__DisplayClass153_0.b__0(IEmitter ms) in C:\projects\lightinject\src\LightInject\LightInject.cs:3856
   LightInject.ServiceContainer.EmitConstructorDependency(IEmitter emitter, Dependency dependency) in C:\projects\lightinject\src\LightInject\LightInject.cs:4158
```

The fix was stupidly simple; we had missed our the Umbraco.Core namespace. So for those of you hitting the same error, you'll probably benefit from a code sample with namespaces:

```csharp
using Umbraco.Core;
using Umbraco.Core.Composing;

public class SomeComposer : IUserComposer
{
    public void Compose(Composition composition)
    {
        composition.Register<ISomeService, SomeService>();
    }
}
```