public virtual T Instance <T>() where T : class, IPlugin
        {
            var scope = AutofacDependencyResolver.Current.RequestLifetimeScope;

            if (!scope.TryResolve(PluginType, out var instance))
            {
                //not resolved
                var constructors = PluginType.GetConstructors();
                foreach (var constructor in constructors)
                {
                    try
                    {
                        var parameters         = constructor.GetParameters();
                        var parameterInstances = new List <object>();
                        foreach (var parameter in parameters)
                        {
                            var service = scope.Resolve(parameter.ParameterType);
                            if (service == null)
                            {
                                throw new Exception($"Plugin Unknown Dependency ({FriendlyName})");
                            }
                            parameterInstances.Add(service);
                        }
                        instance = Activator.CreateInstance(PluginType, parameterInstances.ToArray());
                        break;
                    }
                    catch
                    {}
                }
            }

            if (instance == null)
            {
                throw new Exception($"No constructor was found that had all the dependencies satisfied ({FriendlyName})");
            }

            var typedInstance = instance as T;

            if (typedInstance != null)
            {
                typedInstance.PluginDescriptor = this;
            }
            return(typedInstance);
        }