2024-09-12 20:32:54 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Serein.Library.Api
|
|
|
|
|
|
{
|
2024-09-16 21:38:34 +08:00
|
|
|
|
public interface ISereinIOC
|
2024-09-12 20:32:54 +08:00
|
|
|
|
{
|
2024-09-15 19:48:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 清空
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2024-09-16 21:38:34 +08:00
|
|
|
|
ISereinIOC Reset();
|
2024-09-15 19:48:27 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 注册实例
|
|
|
|
|
|
/// </summary>
|
2024-09-16 21:38:34 +08:00
|
|
|
|
ISereinIOC Register(Type type, params object[] parameters);
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 注册实例
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T"></typeparam>
|
|
|
|
|
|
/// <param name="parameters"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2024-09-16 21:38:34 +08:00
|
|
|
|
ISereinIOC Register<T>(params object[] parameters);
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 注册接口的实例
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="TService"></typeparam>
|
|
|
|
|
|
/// <typeparam name="TImplementation"></typeparam>
|
|
|
|
|
|
/// <param name="parameters"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2024-09-16 21:38:34 +08:00
|
|
|
|
ISereinIOC Register<TService, TImplementation>(params object[] parameters) where TImplementation : TService;
|
2024-09-15 19:48:27 +08:00
|
|
|
|
/// <summary>
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// 获取或创建并注入目标类型,会记录到IOC容器中。
|
2024-09-15 19:48:27 +08:00
|
|
|
|
/// </summary>
|
2024-09-17 14:20:27 +08:00
|
|
|
|
T GetOrRegisterInstantiate<T>();
|
2024-09-15 19:48:27 +08:00
|
|
|
|
/// <summary>
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// 获取或创建并注入目标类型,会记录到IOC容器中。
|
2024-09-15 19:48:27 +08:00
|
|
|
|
/// </summary>
|
2024-09-17 14:20:27 +08:00
|
|
|
|
object GetOrRegisterInstantiate(Type type);
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取类型的实例
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="type"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2024-09-21 10:06:44 +08:00
|
|
|
|
object Get(Type type);
|
|
|
|
|
|
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取指定名称的实例
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <typeparam name="T"></typeparam>
|
|
|
|
|
|
/// <param name="key"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
T Get<T>(string key);
|
2024-09-21 10:06:44 +08:00
|
|
|
|
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 通过名称注册实例
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="key">注入名称</param>
|
|
|
|
|
|
/// <param name="instance">实例对象</param>
|
|
|
|
|
|
/// <param name="needInjectProperty">是否需要注入依赖项</param>
|
|
|
|
|
|
void CustomRegisterInstance(string key, object instance, bool needInjectProperty = true);
|
2024-09-22 14:10:13 +08:00
|
|
|
|
|
2024-09-12 20:32:54 +08:00
|
|
|
|
/// <summary>
|
2024-09-24 22:39:43 +08:00
|
|
|
|
/// 用于临时实例的创建,不注册到IOC容器中,依赖项注入失败时也不记录。
|
2024-09-12 20:32:54 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
object Instantiate(Type type, params object[] parameters);
|
2024-09-24 22:39:43 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 实例化注册的类型,并注入依赖项
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2024-09-16 21:38:34 +08:00
|
|
|
|
ISereinIOC Build();
|
2024-09-24 22:39:43 +08:00
|
|
|
|
|
2024-09-16 21:38:34 +08:00
|
|
|
|
ISereinIOC Run<T>(Action<T> action);
|
|
|
|
|
|
ISereinIOC Run<T1, T2>(Action<T1, T2> action);
|
|
|
|
|
|
ISereinIOC Run<T1, T2, T3>(Action<T1, T2, T3> action);
|
|
|
|
|
|
ISereinIOC Run<T1, T2, T3, T4>(Action<T1, T2, T3, T4> action);
|
|
|
|
|
|
ISereinIOC Run<T1, T2, T3, T4, T5>(Action<T1, T2, T3, T4, T5> action);
|
|
|
|
|
|
ISereinIOC Run<T1, T2, T3, T4, T5, T6>(Action<T1, T2, T3, T4, T5, T6> action);
|
|
|
|
|
|
ISereinIOC Run<T1, T2, T3, T4, T5, T6, T7>(Action<T1, T2, T3, T4, T5, T6, T7> action);
|
|
|
|
|
|
ISereinIOC Run<T1, T2, T3, T4, T5, T6, T7, T8>(Action<T1, T2, T3, T4, T5, T6, T7, T8> action);
|
2024-09-12 20:32:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|