/// <summary>
 /// Registers the specified instance.
 /// </summary>
 /// <typeparam name="T">The of the instance to register.</typeparam>
 /// <param name="instance">The instance.</param>
 /// <param name="scope">The scope.</param>
 /// <param name="serviceName">Name of the service.</param>
 public void Register <T>(Func <IInjectionContainer, T> instance, Injection.Scope scope = Injection.Scope.Transient, string serviceName = "")
 {
     if (scope == Injection.Scope.Singleton)
     {
         this.container.Register <T>(factory => instance(this), serviceName, new PerContainerLifetime());
     }
     else
     {
         this.container.Register(factory => instance(this), serviceName);
     }
 }
 /// <summary>
 /// Registers the specified scope.
 /// </summary>
 /// <typeparam name="T">Interface to register</typeparam>
 /// <param name="scope">The scope.</param>
 public void Register <T>(Injection.Scope scope)
 {
     if (scope == Injection.Scope.Singleton)
     {
         this.container.Register <T>(new PerContainerLifetime());
     }
     else
     {
         this.container.Register <T>();
     }
 }
 /// <summary>
 /// Registers the specified service type.
 /// </summary>
 /// <param name="serviceType">Type of the service.</param>
 /// <param name="implementation">The implementation of the service.</param>
 /// <param name="scope">The scope.</param>
 public void Register(Type serviceType, Type implementation, Injection.Scope scope)
 {
     if (scope == Injection.Scope.Singleton)
     {
         this.container.Register(serviceType, implementation, new PerContainerLifetime());
     }
     else
     {
         this.container.Register(serviceType, implementation);
     }
 }
 /// <summary>
 /// Registers the specified service name.
 /// </summary>
 /// <typeparam name="T">Type of the service to register</typeparam>
 /// <typeparam name="TImplementation">The type of the implementation.</typeparam>
 /// <param name="serviceName">Name of the service.</param>
 /// <param name="scope">The scope.</param>
 public void Register <T, TImplementation>(string serviceName, Injection.Scope scope)
     where TImplementation : T
 {
     if (scope == Injection.Scope.Singleton)
     {
         this.container.Register <T, TImplementation>(serviceName, new PerContainerLifetime());
     }
     else
     {
         this.container.Register <T, TImplementation>(serviceName);
     }
 }