using Autofac.Core;

namespace OASystem.API.OAMethodLib
{
    public class AutofacIocManager
    {
        public static AutofacIocManager Instance = new AutofacIocManager();
        public ILifetimeScope Container { get; set; }

        public T GetService<T>()
        {
            return ResolutionExtensions.Resolve<T>((IComponentContext)(object)this.Container);
        }

        public T GetService<T>(string serviceKey)
        {
            return ResolutionExtensions.ResolveKeyed<T>((IComponentContext)(object)this.Container, (object)serviceKey);
        }

        public T GetService<T>(string serviceKey, params Parameter[] parameters)
        {
            return ResolutionExtensions.ResolveKeyed<T>((IComponentContext)(object)this.Container, (object)serviceKey, parameters);
        }

        public object GetService(Type serviceType)
        {
            return ResolutionExtensions.Resolve((IComponentContext)(object)this.Container, serviceType);
        }

        public object GetService(string serviceKey, Type serviceType)
        {
            return ResolutionExtensions.ResolveKeyed((IComponentContext)(object)this.Container, (object)serviceKey, serviceType);
        }

        public bool IsRegistered<T>()
        {
            return ResolutionExtensions.IsRegistered<T>((IComponentContext)(object)this.Container);
        }

        public bool IsRegistered<T>(string serviceKey)
        {
            return ResolutionExtensions.IsRegisteredWithKey<T>((IComponentContext)(object)this.Container, (object)serviceKey);
        }

        public bool IsRegistered(Type serviceType)
        {
            return ResolutionExtensions.IsRegistered((IComponentContext)(object)this.Container, serviceType);
        }

        public bool IsRegisteredWithKey(string serviceKey, Type serviceType)
        {
            return ResolutionExtensions.IsRegisteredWithKey((IComponentContext)(object)this.Container, (object)serviceKey, serviceType);
        }
    }
}