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

62 lines
1.5 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LightInject;
namespace Umbraco.Core.Composing.LightInject
{
public class ContainerAdapter : IContainer
{
private readonly IServiceContainer container;
public object ConcreteContainer => container;
public void RegisterSingleton<T>(Func<IContainer, T> factory)
{
container.RegisterSingleton(f => factory(this));
}
public void Register<T>(Func<IContainer, T> factory)
{
container.Register(f => factory(this));
}
public void Register<T, TService>(Func<IContainer, T, TService> factory)
{
container.Register<T, TService>((f, x) => factory(this, x));
}
public T RegisterCollectionBuilder<T>()
{
return container.RegisterCollectionBuilder<T>();
}
public ContainerAdapter(IServiceContainer container)
{
this.container = container;
}
public T TryGetInstance<T>()
{
return container.TryGetInstance<T>();
}
public T GetInstance<T>()
{
return container.GetInstance<T>();
}
2018-06-19 19:59:12 +02:00
public T GetInstance<T>(object[] args)
{
return (T)container.GetInstance(typeof(T), args);
}
2018-06-19 19:59:12 +02:00
public object GetInstance(Type type)
{
return container.GetInstance(type);
}
}
}