using System; using System.Collections.Generic; namespace NzbDrone.Common.Composition { public interface IContainer { void Register(T instance) where T : class; void Register() where TImplementation : class, TService where TService : class; T Resolve() where T : class; object Resolve(Type type); void Register(Type serviceType, Type implementationType); void Register(Func factory) where TService : class; void RegisterSingleton(Type service, Type implementation); IEnumerable ResolveAll() where T : class; void RegisterAllAsSingleton(Type registrationType, IEnumerable implementationList); bool IsTypeRegistered(Type type); IEnumerable GetImplementations(Type contractType); } }