mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 18:03:27 +08:00
添加项目文件。
This commit is contained in:
82
CoreCms.Net.Core/AutoFac/AutofacModuleRegister.cs
Normal file
82
CoreCms.Net.Core/AutoFac/AutofacModuleRegister.cs
Normal file
@@ -0,0 +1,82 @@
|
||||
using Autofac;
|
||||
using Autofac.Extras.DynamicProxy;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using CoreCms.Net.Configuration;
|
||||
using CoreCms.Net.Core.AOP;
|
||||
using CoreCms.Net.Utility.Extensions;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using NLog;
|
||||
|
||||
namespace CoreCms.Net.Core.AutoFac
|
||||
{
|
||||
public class AutofacModuleRegister : Autofac.Module
|
||||
{
|
||||
protected override void Load(ContainerBuilder builder)
|
||||
{
|
||||
var basePath = AppContext.BaseDirectory;
|
||||
|
||||
#region 带有接口层的服务注入
|
||||
|
||||
var servicesDllFile = Path.Combine(basePath, "CoreCms.Net.Services.dll");
|
||||
var repositoryDllFile = Path.Combine(basePath, "CoreCms.Net.Repository.dll");
|
||||
|
||||
if (!(File.Exists(servicesDllFile) && File.Exists(repositoryDllFile)))
|
||||
{
|
||||
var msg = "Repository.dll和Services.dll 丢失,因为项目解耦了,所以需要先F6编译,再F5运行,请检查 bin 文件夹,并拷贝。";
|
||||
throw new Exception(msg);
|
||||
}
|
||||
|
||||
// AOP 开关,如果想要打开指定的功能,只需要在 appsettigns.json 对应对应 true 就行。
|
||||
//var cacheType = new List<Type>();
|
||||
//if (AppSettingsConstVars.RedisConfigEnabled)
|
||||
//{
|
||||
// builder.RegisterType<RedisCacheAop>();
|
||||
// cacheType.Add(typeof(RedisCacheAop));
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// builder.RegisterType<MemoryCacheAop>();
|
||||
// cacheType.Add(typeof(MemoryCacheAop));
|
||||
//}
|
||||
|
||||
// 获取 Service.dll 程序集服务,并注册
|
||||
var assemblysServices = Assembly.LoadFrom(servicesDllFile);
|
||||
//支持属性注入依赖重复
|
||||
builder.RegisterAssemblyTypes(assemblysServices).AsImplementedInterfaces().InstancePerDependency()
|
||||
.PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
|
||||
|
||||
// 获取 Repository.dll 程序集服务,并注册
|
||||
var assemblysRepository = Assembly.LoadFrom(repositoryDllFile);
|
||||
//支持属性注入依赖重复
|
||||
builder.RegisterAssemblyTypes(assemblysRepository).AsImplementedInterfaces().InstancePerDependency()
|
||||
.PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);
|
||||
|
||||
|
||||
// 获取 Service.dll 程序集服务,并注册
|
||||
//var assemblysServices = Assembly.LoadFrom(servicesDllFile);
|
||||
//builder.RegisterAssemblyTypes(assemblysServices)
|
||||
// .AsImplementedInterfaces()
|
||||
// .InstancePerDependency()
|
||||
// .PropertiesAutowired()
|
||||
// .EnableInterfaceInterceptors()//引用Autofac.Extras.DynamicProxy;
|
||||
// .InterceptedBy(cacheType.ToArray());//允许将拦截器服务的列表分配给注册。
|
||||
|
||||
//// 获取 Repository.dll 程序集服务,并注册
|
||||
//var assemblysRepository = Assembly.LoadFrom(repositoryDllFile);
|
||||
//builder.RegisterAssemblyTypes(assemblysRepository)
|
||||
// .AsImplementedInterfaces()
|
||||
// .PropertiesAutowired()
|
||||
// .InstancePerDependency();
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user