using Autofac;
using System;
using System.Linq;
using System.Reflection;
namespace YiSha.Admin.WebApi.AutoFac
{
public class AutofacModuleRegister : Autofac.Module
{
//重写Autofac管道Load方法,在这里注册注入
protected override void Load(ContainerBuilder builder)
{
//注册Service中的对象,Service中的类要以Service结尾,否则注册失败
builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.IService")).Where(a => a.Name.StartsWith("I") && a.Name.EndsWith("Service")).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.Service")).Where(a => a.Name.EndsWith("Service")).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.IBusiness")).Where(a => a.Name.StartsWith("I") && a.Name.EndsWith("BLL")).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.Business")).Where(a => a.Name.EndsWith("BLL")).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.Business.Cache")).Where(a => (a.Name.StartsWith("I") && a.Name.EndsWith("Business")) || (a.Name.EndsWith("Business")) || (a.Name.StartsWith("I") && a.Name.EndsWith("Service")) || (a.Name.EndsWith("Service"))).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(GetAssemblyByName("YiSha.Business.AutoJob")).Where(a => (a.Name.StartsWith("I") && a.Name.EndsWith("Business")) || (a.Name.EndsWith("Business")) || (a.Name.StartsWith("I") && a.Name.EndsWith("Service")) || (a.Name.EndsWith("Service"))).AsImplementedInterfaces();
}
///
/// 根据程序集名称获取程序集
///
/// 程序集名称
///
public static Assembly GetAssemblyByName(String AssemblyName)
{
return Assembly.Load(AssemblyName);
}
}
}