using System.Reflection;
using Autofac;
using Autofac.Core;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyModel;
namespace KH.WMS.Core.DependencyInjection;
///
/// 服务集合扩展方法
///
public class ServiceExtensions : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
List assemblies = GetReferencedAssemblies();
IServiceRegistrar registrar = new ServiceRegistrar();
registrar.Register(builder, assemblies.ToArray());
}
///
/// 获取项目内的程序集
///
///
private List GetReferencedAssemblies()
{
List assemblies = new();
string basePath = AppContext.BaseDirectory;
try
{
List compilationLibraries = DependencyContext.Default.RuntimeLibraries.Where(x => x.Name.StartsWith("KH.WMS")).ToList();
foreach (var library in compilationLibraries)
{
try
{
string path = Path.Combine(basePath, $"{library.Name}.dll");
if (!File.Exists(path))
{
continue;
}
assemblies.Add(Assembly.LoadFrom(path));
}
catch (Exception ex)
{
Console.WriteLine(library.Name + ex.Message);
}
}
}
catch (Exception ex)
{
Console.WriteLine($"错误: 获取程序集失败: {ex.Message}");
}
return assemblies;
}
}