public interface IContainer : IDisposable
{
List<Type> GetAllTypesClass();
object Resolve(Type type, string name = null);
T Resolve<T>(string name = null);
IEnumerable<T> ResolveAll<T>();
IEnumerable<object> ResolveAllType(Type type);
ScopeResolver ScopeResolver();
void RegisterSingleton<T>();
void RegisterSingleton<TFrom, TTo>(string name = null) where TTo : TFrom;
void RegisterSingleton<TFrom>(Func<TFrom> function, string name = null);
void RegisterSingleton<TFrom>(Func<IContainer, TFrom> function, string name = null);
void RegisterSingleton(Type typeFrom, Type typeTo, string name = null);
void RegisterSingleton(Type typeFrom, object obj, string name = null);
void RegisterSingleton<T>(T obj, string name = null);
void RegisterTransient<T>(string name = null);
void RegisterTransient(Type typeFrom, Type typeTo, string name = null);
void RegisterTransient<TFrom, TTo>(string name = null) where TTo : TFrom;
void RegisterTransient<TFrom>(Func<TFrom> function, string name = null);
void RegisterTransient<TFrom>(Func<IContainer, TFrom> function, string name = null);
void RegisterScoped<T>(string name = null);
void RegisterScoped(Type typeFrom, Type typeTo, string name = null);
void RegisterScoped<TFrom, TTo>(string name = null) where TTo : TFrom;
void RegisterScoped<TFrom>(Func<TFrom> function, string name = null);
void RegisterScoped<TFrom>(Func<IContainer, TFrom> function, string name = null);
void Register(LifetimeType registerType, Type from, Type to, Func<IContainer, object> func = null, string instanceName = null, object obj = null);
void RegisterModule(IModuleIoC module);
void RegisterModules(IModuleIoC[] modules);
void RegisterConcept(Type conceptType, Assembly assembly = null);
void RegisterConceptAttribute(Type attributeType, Assembly assembly = null);
void RegisterAbstraction(Assembly assemblyContract);
void RegisterConfigurationClass<T>();
void RegisterConfigurationClass(Type configurationType);
void RegisterFirtsImplementation<T>(LifetimeType? registerType = LifetimeType.Transient);
void RegisterFirtsImplementation(Type type, LifetimeType? registerType = LifetimeType.Transient);
bool ContainsDependency<T>(string name = null);
bool ContainsDependency(Type type, string name = null);
}