using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.Core.DI { /// /// Represents the Tango IOC container interface. /// public interface ITangoIOC { /// /// Registers the specified type. /// /// void Register() where T : class; /// /// Registers the specified instance type and instance. /// /// /// The instance. void Register(T instance) where T : class; /// /// Registers the specified type. /// /// The type. void Register(Type type); /// /// Registers the specified type and implementation type. /// /// The type. /// The implementation. void Register(Type type, Type implementation); /// /// Registers the specified type and instance. /// /// The type. /// The instance. void Register(Type type, Object instance); /// /// Registers this instance. /// /// The type of the type. /// The type of the implementation. void Register() where Implementation : class, Type; /// /// Registers the specified type, implementation and implementation instance. /// /// The type of the type. /// The type of the implementation. /// The instance. void Register(Implementation instance) where Implementation : class, Type; /// /// Determines whether the specified type is registered. /// /// /// /// true if this instance is registered; otherwise, false. /// bool IsRegistered(); /// /// Determines whether the specified type is registered. /// /// The type. /// /// true if the specified type is registered; otherwise, false. /// bool IsRegistered(Type type); /// /// Unregisters the specified type. /// /// void Unregister(); /// /// Unregisters the specified type. /// /// The type. void Unregister(Type type); /// /// Gets the instance of type T. /// /// /// T GetInstance(); /// /// Injects any dependencies to the target properties using the . /// /// The target. void Inject(Object target); /// /// Executes the specified action when type T is available. if already available action will be executed immediately. /// /// /// The callback. /// void GetInstanceWhenAvailable(Action callback); /// /// Gets all instances by the specified base type. /// /// /// IEnumerable GetAllInstancesByBase(); /// /// Gets all instances by the specified base type. /// /// Type of the base. /// IEnumerable GetAllInstancesByBase(Type baseType); /// /// Gets the instance by the specified type. /// /// The type. /// object GetInstance(Type type); } }