| | |
| | | /// 容器 |
| | | /// </summary> |
| | | public static IContainer Instance; |
| | | public static AppDomain AppDomain; |
| | | |
| | | /// <summary> |
| | | /// 初始化容器 |
| | |
| | | /// <param name="builder"></param> |
| | | public static void Build(ContainerBuilder builder) |
| | | { |
| | | var assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "Tiger.Business.dll"); |
| | | //注入Tiger.Business.dll |
| | | builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces(); |
| | | ////注入Tiger.Business.dll |
| | | //var assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "Tiger.Business.dll"); |
| | | //builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces(); |
| | | |
| | | #region 动态加载多个dll |
| | | //string[] assemblyScanerPattern = new[] { @"MyModule.*.dll"}; |
| | | string[] assemblyPattern = new[] { "Tiger.Business([.].*)*.dll" }; |
| | | |
| | | //// Make sure process paths are same... |
| | | //Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); |
| | | //AppDomain = AppDomain.CreateDomain("AutoFac Dll"); |
| | | //List<Assembly> assemblies = new List<Assembly>(); |
| | | //foreach (var file in Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories).Where(filename => assemblyPattern.Any(pattern => Regex.IsMatch(filename, pattern)))) |
| | | //{ |
| | | // var assembly = AppDomain.Load(Assembly.LoadFrom(file).GetName()); |
| | | // assemblies.Add(assembly); |
| | | //} |
| | | |
| | | //// 1. Scan for assemblies containing autofac modules in the bin folder |
| | | // 1. Scan for assemblies containing autofac modules in the bin folder |
| | | //List<Assembly> assemblies = new List<Assembly>(); |
| | | //assemblies.AddRange( |
| | | // Directory.EnumerateFiles(Directory.GetCurrentDirectory(), "*.dll", SearchOption.AllDirectories) |
| | | // .Where(filename => assemblyScanerPattern.Any(pattern => Regex.IsMatch(filename, pattern))) |
| | | // .Select(Assembly.LoadFrom) |
| | | // Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll", SearchOption.AllDirectories) |
| | | // .Where(filename => assemblyPattern.Any(pattern => Regex.IsMatch(filename, pattern))) |
| | | // .Select(Assembly.LoadFrom) |
| | | //); |
| | | |
| | | //foreach (var assembly in assemblies) |
| | | //{ |
| | | // builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces(); |
| | | //} |
| | | |
| | | var assemblies = PluginManager.Load(AppDomain.CurrentDomain.BaseDirectory, "Tiger.Business([.].*)*.dll"); |
| | | foreach (var assembly in assemblies) |
| | | { |
| | | builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces(); |
| | | } |
| | | #endregion |
| | | |
| | | //读取配置文件,把配置关系装载到ContainerBuilder |
| | |
| | | { |
| | | return AutoFacContainer.Instance.Resolve<T>(); |
| | | } |
| | | |
| | | public static dynamic Resolve(string typeFullName) |
| | | { |
| | | return AutoFacContainer.Instance.Resolve(System.Type.GetType(typeFullName, true)); |
| | | } |
| | | } |
| | | } |