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");
		}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值