微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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");
		}
}

原文地址:https://blog.csdn.net/weixin_46942018/article/details/115395672

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐