Asp.Net Core 实现服务的批量注册注入

-----------------Netcore依赖注入批量注册-------------
public static void AddAssembly(IServiceCollection service, string assemblyName = "NetCoreWebApi", ServiceLifetime serviceLifetime = ServiceLifetime.Singleton)
{
	var assembly = RuntimeHelper.GetAssemblyByName(assemblyName);
	var types = assembly.GetTypes();
	var list = types.Where(u => u.IsClass && !u.IsAbstract && !u.IsGenericType).ToList();
	foreach (var type in list)
	{
		var interfaceList = type.GetInterfaces();
		if (interfaceList.Any())
			{
				var inter = interfaceList.First();
				switch (serviceLifetime)
				{
				case ServiceLifetime.Transient:
				service.AddTransient(inter, type);
				break;
				case ServiceLifetime.Scoped:
				service.AddScoped(inter, type);
				break;
				case ServiceLifetime.Singleton:
				service.AddSingleton(inter, type);
				break;
		   }
     }
  }
}

public class RuntimeHelper
{
	//通过程序集的名称加载程序集
	public static Assembly GetAssemblyByName(string assemblyName)
	{
	    return AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(assemblyName));
	}
}

-----------------------------Startup文件注册--------------------
public void ConfigureServices(IServiceCollection services)
{   
   Utils.AddAssembly(services);//批量注册
}

-----------------------------控制器调用---------------------------
/// <summary>
/// 
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class KaneController : Utils
{
	private readonly IKaneProxy ikaneproxy;

		/// <summary>
		/// 构造方法调用接口
		/// </summary>
		/// <param name="IKaneProxy"></param>
		public KaneController(IKaneProxy IKaneProxy)
		{
			ikaneproxy = IKaneProxy;
		}

		/// <summary>
		///依赖注入测试
		/// </summary>
		/// <returns></returns>
		[HttpPost]
		[Route("GetString")]
		public async Task<IActionResult> GetWay()
		{
			var json = new Dictionary<string, object>(); //定义返回数据
			var courseList = await ikaneproxy.GetWay();
			json.Add("course_list", string.Join(",", courseList));
			return ToSuccessResult<object>(json, "Success");
		}
}

相关文章

数组的定义 Dim MyArray MyArray = Array(1‚5‚123‚12‚98...
\'参数: \'code:要检测的代码 \'leixing:html或者ubb \'n...
演示效果: 代码下载: 点击下载
环境:winxp sp2 ,mysql5.0.18,mysql odbc 3.51 driver 表采...
其实说起AJAX的初级应用是非常简单的,通俗的说就是客户端(j...
<% ’判断文件名是否合法 Function isFilename(aFilename...