using System;
using System.Collections.Generic;
using System.Text;
namespace Serein.Library.Api
{
public interface ISereinIOC
{
///
/// 清空
///
///
ISereinIOC Reset();
///
/// 注册实例
///
ISereinIOC Register(Type type, params object[] parameters);
///
/// 注册实例
///
///
///
///
ISereinIOC Register(params object[] parameters);
///
/// 注册接口的实例
///
///
///
///
///
ISereinIOC Register(params object[] parameters) where TImplementation : TService;
/////
///// 获取或创建并注入目标类型,会记录到IOC容器中。
/////
//T GetOrRegisterInstantiate();
/////
///// 获取或创建并注入目标类型,会记录到IOC容器中。
/////
//object GetOrRegisterInstantiate(Type type);
///
/// 获取类型的实例
///
///
///
object Get(Type type);
T Get();
///
/// 获取指定名称的实例
///
///
///
///
T Get(string key);
///
/// 通过名称注册实例
///
/// 注入名称
/// 实例对象
/// 是否需要注入依赖项
void CustomRegisterInstance(string key, object instance, bool needInjectProperty = true);
///
/// 用于临时实例的创建,不注册到IOC容器中,依赖项注入失败时也不记录。
///
object Instantiate(Type type);
///
/// 用于临时实例的创建,不注册到IOC容器中,依赖项注入失败时也不记录。
///
T Instantiate();
///
/// 实例化注册的类型,并注入依赖项
///
///
ISereinIOC Build();
ISereinIOC Run(Action action);
ISereinIOC Run(Action action);
ISereinIOC Run(Action action);
ISereinIOC Run(Action action);
ISereinIOC Run(Action action);
ISereinIOC Run(Action action);
ISereinIOC Run(Action action);
ISereinIOC Run(Action action);
}
}