Files
Umbraco-CMS/src/Umbraco.Core/Composing/LightInject/LightInjectContainer.cs

57 lines
1.7 KiB
C#
Raw Normal View History

using System;
using LightInject;
namespace Umbraco.Core.Composing.LightInject
{
2018-06-29 13:17:46 +02:00
/// <summary>
/// Implements <see cref="IContainer"/> with LightInject.
2018-06-29 13:17:46 +02:00
/// </summary>
public class LightInjectContainer : IContainer
{
2018-06-29 13:17:46 +02:00
private readonly IServiceContainer _container;
2018-06-29 13:17:46 +02:00
/// <summary>
/// Initializes a new instance of the <see cref="LightInjectContainer"/> with a LightInject container.
2018-06-29 13:17:46 +02:00
/// </summary>
public LightInjectContainer(IServiceContainer container)
{
2018-06-29 13:17:46 +02:00
_container = container;
}
/// <inheritdoc />
2018-06-29 13:17:46 +02:00
public object ConcreteContainer => _container;
/// <inheritdoc />
public void RegisterSingleton<T>(Func<IContainer, T> factory)
=> _container.RegisterSingleton(f => factory(this));
/// <inheritdoc />
public void Register<T>(Func<IContainer, T> factory)
2018-06-29 13:17:46 +02:00
=> _container.Register(f => factory(this));
2018-06-29 13:17:46 +02:00
/// <inheritdoc />
public void Register<T, TService>(Func<IContainer, T, TService> factory)
2018-06-29 13:17:46 +02:00
=> _container.Register<T, TService>((f, x) => factory(this, x));
2018-06-29 13:17:46 +02:00
/// <inheritdoc />
public T RegisterCollectionBuilder<T>()
2018-06-29 13:17:46 +02:00
=> _container.RegisterCollectionBuilder<T>();
2018-06-29 13:17:46 +02:00
/// <inheritdoc />
public T TryGetInstance<T>()
2018-06-29 13:17:46 +02:00
=> _container.TryGetInstance<T>();
2018-06-29 13:17:46 +02:00
/// <inheritdoc />
public T GetInstance<T>()
2018-06-29 13:17:46 +02:00
=> _container.GetInstance<T>();
2018-06-19 19:59:12 +02:00
2018-06-29 13:17:46 +02:00
/// <inheritdoc />
public T GetInstance<T>(object[] args)
2018-06-29 13:17:46 +02:00
=> (T) _container.GetInstance(typeof(T), args);
2018-06-29 13:17:46 +02:00
/// <inheritdoc />
2018-06-19 19:59:12 +02:00
public object GetInstance(Type type)
2018-06-29 13:17:46 +02:00
=> _container.GetInstance(type);
}
}