General.Core/Extensions/ServiceCollectionExtensions.cs
(开头部分) 2KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using General.Core.Librs;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Linq;
namespace General.Core.Extensions
{
/// <summary>
/// IServiceCollection
/// </summary>
public static class ServiceCollectionExtensions
{
/// <summary>
/// 程序集依赖注入
/// </summary>
/// <param name="services"></param>
/// <param name="assemblyName"></param>
/// <param name="serviceLifetime"></param>
public static void AddAssembly(this IServiceCollection services, string assemblyName, ServiceLifetime serviceLifetime = ServiceLifetime.Scoped)
{
if (services == null)
throw new ArgumentNullException(nameof(services) + "为空");
if (string.IsNullOrEmpty(assemblyName))
throw new ArgumentNullException(nameof(assemblyName) + "为空");
var assembly = RuntimeHelper.GetAssemblyByName(assemblyName);
if (assembly == null)
throw new DllNotFoundException(nameof(assembly) + ".dll不存在");
var types = assembly.GetTypes();
var list = types.Where(o => o.IsClass && !o.IsAbstract && !o.IsGenericType).ToList();
if (list == null && list.Any())
return;
foreach (var type in list)
{
var interfacesList = type.GetInterfaces();
if (interfacesList == null || !interfacesList.Any())
{
continue;
}
else
{
var inter = interfacesList.First();
//注入
switch (serviceLifetime)
{
case ServiceLifetime.Singleton:
services.AddSingleton(inter, type);
break;
case ServiceLifetime.Scoped:
services.AddScoped(inter, type);
break;
case ServiceLifetime.Transient:
services.AddTransient(inter, type);
break;
}
}
后面还有 6 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
