Admin.Core/src/platform/ZhonTai.Admin/Core/RegisterModules/SingleInstanceModule.cs
(完整代码) 1KBusing Autofac;
using Microsoft.Extensions.DependencyModel;
using System.Linq;
using System.Reflection;
using ZhonTai.Admin.Core.Attributes;
using ZhonTai.Admin.Core.Configs;
using Module = Autofac.Module;
namespace ZhonTai.Admin.Core.RegisterModules;
public class SingleInstanceModule : Module
{
private readonly AppConfig _appConfig;
/// <summary>
/// 单例注入
/// </summary>
/// <param name="appConfig">AppConfig</param>
public SingleInstanceModule(AppConfig appConfig)
{
_appConfig = appConfig;
}
protected override void Load(ContainerBuilder builder)
{
if(_appConfig.AssemblyNames?.Length > 0)
{
// 获得要注入的程序集
Assembly[] assemblies = DependencyContext.Default.RuntimeLibraries
.Where(a => _appConfig.AssemblyNames.Contains(a.Name))
.Select(o => Assembly.Load(new AssemblyName(o.Name))).ToArray();
//无接口注入单例
builder.RegisterAssemblyTypes(assemblies)
.Where(t => t.GetCustomAttribute<SingleInstanceAttribute>() != null)
.SingleInstance()
.PropertiesAutowired();
//有接口注入单例
builder.RegisterAssemblyTypes(assemblies)
.Where(t => t.GetCustomAttribute<SingleInstanceAttribute>() != null)
.AsImplementedInterfaces()
.SingleInstance()
.PropertiesAutowired();
}
}
}
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
