-----------------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 举报,一经查实,本站将立刻删除。