¶Ô±ÈÐÂÎļþ |
| | |
| | | using Autofac; |
| | | using Autofac.Extras.DynamicProxy; |
| | | using Microsoft.Extensions.DependencyModel; |
| | | using OfficeOpenXml.FormulaParsing.Excel.Functions.Text; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Reflection; |
| | | using System.Runtime.Loader; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEA_Core.AOP; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_Core.LogHelper; |
| | | |
| | | namespace WIDESEA_Core.Extensions |
| | | { |
| | | public class AutofacModuleRegister : Autofac.Module |
| | | { |
| | | //private static readonly ILog log = LogManager.GetLogger(typeof(AutofacModuleRegister)); |
| | | protected override void Load(ContainerBuilder builder) |
| | | { |
| | | var basePath = AppContext.BaseDirectory; |
| | | var cacheType = new List<Type>(); |
| | | |
| | | builder.RegisterType<LogAOP>(); |
| | | if (AppSettings.app("LogAopEnable").ObjToBool()) |
| | | { |
| | | cacheType.Add(typeof(LogAOP)); |
| | | } |
| | | |
| | | builder.RegisterGeneric(typeof(RepositoryBase<>)).As(typeof(IRepository<>)).InstancePerDependency();//注åä»å¨ |
| | | builder.RegisterGeneric(typeof(ServiceBase<,>)).As(typeof(IService<>)).InstancePerDependency();//注åæå¡ |
| | | |
| | | Type baseType = typeof(IDependency); |
| | | |
| | | List<RuntimeLibrary> compilationLibrary = DependencyContext.Default |
| | | .RuntimeLibraries |
| | | .Where(x => !x.Serviceable |
| | | && x.Type == "project") |
| | | .ToList(); |
| | | List<Assembly> assemblyList = new List<Assembly>(); |
| | | foreach (var library in compilationLibrary) |
| | | { |
| | | try |
| | | { |
| | | string path = Path.Combine(basePath, $"{library.Name}.dll"); |
| | | if (!File.Exists(path)) |
| | | { |
| | | var msg = $"{library.Name}.dll丢失ï¼å 为项ç®è§£è¦äºï¼æä»¥éè¦å
F6ç¼è¯ï¼åF5è¿è¡ï¼è¯·æ£æ¥ bin æä»¶å¤¹ï¼å¹¶æ·è´ã"; |
| | | //log.Error(msg); |
| | | throw new Exception(msg); |
| | | } |
| | | assemblyList.Add(Assembly.LoadFrom(path)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine(library.Name + ex.Message); |
| | | } |
| | | } |
| | | |
| | | builder.RegisterAssemblyTypes(assemblyList.ToArray()).Where(x => !x.IsInterface && !x.IsAbstract && baseType.IsAssignableFrom(x)) |
| | | .AsImplementedInterfaces() |
| | | .PropertiesAutowired() |
| | | .InstancePerDependency(). |
| | | EnableInterfaceInterceptors() |
| | | .InterceptedBy(cacheType.ToArray()); |
| | | |
| | | builder.RegisterType<UnitOfWorkManage>().As<IUnitOfWorkManage>() |
| | | .AsImplementedInterfaces() |
| | | .InstancePerLifetimeScope() |
| | | .PropertiesAutowired(); |
| | | |
| | | builder.RegisterType<RequestLogModel>().InstancePerLifetimeScope(); |
| | | } |
| | | } |
| | | } |