using System;
using System.Collections.Generic;
namespace SmallInjector
{
///
/// DI Container
///
public interface IContainer
{
///
/// Register types in the resolve container.
///
/// Type of the service.
/// Type of the interface of the service.
/// True if the service should be singleton. False otherwise.
/// instance of the service
void RegisterType(bool isSingleton, TService instance = default) where TService : TInterface;
///
/// Register types in the resolve container.
///
void RegisterType(bool isSingleton, TService instance = default);
///
/// Resolve service of specified type.
///
object Resolve(Type serviceType);
///
/// Resolve service of specified type.
///
TService Resolve();
///
/// Returns true, if the service is registered. False otherwise.
///
bool IsRegistered();
///
/// Returns true, if the service is registered. False otherwise.
///
bool IsRegistered(Type serviceType);
///
/// Resolve any implementation
///
IEnumerable