using System; namespace Tapeti { public interface IDependencyResolver { T Resolve() where T : class; object Resolve(Type type); } public interface IDependencyContainer : IDependencyResolver { void RegisterDefault() where TService : class where TImplementation : class, TService; void RegisterDefault(Func factory) where TService : class; void RegisterDefaultSingleton() where TService : class where TImplementation : class, TService; void RegisterDefaultSingleton(TService instance) where TService : class; void RegisterDefaultSingleton(Func factory) where TService : class; void RegisterController(Type type); } }