I've been using Unity with Umbraco ModelsBuilder for a while. Figured I should share some of my snippets. Here is how you inject IContentService into the Unity Container.
About IContentService
From the docs: Defines the ContentService, which is an easy access to operations involving IContent. https://our.umbraco.com/apidocs/csharp/api/Umbraco.Core.Services.IContentService.html
Using with Unity
Unity, the Microsoft IoC Container.
// Injecting existing contentservice instance into the unity container // Eric Herlitz - www.herlitz.io container.RegisterType( lifetimeManager: new SingletonLifetimeManager(), injectionMembers: new InjectionFactory( c => ApplicationContext.Current.Services.ContentService ));
Nothing fancy to it really, we simply register the singleton instance from ApplicationContext.Current.Services.ContentService with the interface in the Unity IoC Container.
Usage
public class WhateverService
{
private readonly IContentService _contentService;
public WhateverService(IContentService contentService)
{
_contentService = contentService;
}
public string GetNameById(int id)
{
return $"The name of the node is {_contentService.GetById(id).Name}";
}
public IContent GetById(int id)
{
return _contentService.GetById(id);
}
}
Unity will inject the IContentService using constructor injection and expose it in the _contentService variable. This will work in any injectable object in Umbraco as well as custom implementations and classes.
