zoukankan      html  css  js  c++  java
  • Autofac的注入和web.config配合

    public static void BuildMvcContainer()
            {
                var builder = new ContainerBuilder();
                var assemblys = AppDomain.CurrentDomain.GetAssemblies().ToList();
    
                //拆分DLL后需要注册,需要注入的DLL
                Assembly[] asm = GetAllAssembly("*.Controllers.dll").ToArray();
                builder.RegisterAssemblyTypes(asm);
           //读取web.config中配置的值 
                builder.RegisterModule(new ConfigurationSettingsReader("autofac"));
                
                var container = builder.Build();
                DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
            }
            #region 加载程序集
            private static List<Assembly> GetAllAssembly(string dllName)
            {
                List<string> pluginpath = FindPlugin(dllName);
                var list = new List<Assembly>();
                foreach (string filename in pluginpath)
                {
                    try
                    {
                        string asmname = Path.GetFileNameWithoutExtension(filename);
                        if (asmname != string.Empty)
                        {
                            Assembly asm = Assembly.LoadFrom(filename);
                            list.Add(asm);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.Write(ex.Message);
                    }
                }
                return list;
            }
            //查找所有插件的路径
            private static List<string> FindPlugin(string dllName)
            {
                List<string> pluginpath = new List<string>();
               
                    string path = AppDomain.CurrentDomain.BaseDirectory;
                    string dir = Path.Combine(path, "bin");
                    string[] dllList = Directory.GetFiles(dir, dllName);
                    if (dllList.Length > 0)
                    {
                        pluginpath.AddRange(dllList.Select(item => Path.Combine(dir, item.Substring(dir.Length + 1))));
                    }
                return pluginpath;
            }
            #endregion

    上面的代码就是注册的代码,我是在MVC4使用,写完之后再Global.asax中的Application_Start调用,确保启动应用后执行

    然后是web.config中配置

      <autofac configSource="Configurationautofac.config" />

    我web.config中引用一个文件,详细看我之前的博文

    <?xml version="1.0" encoding="utf-8"?>
    <autofac>
      <components>
        <component  type="Cactus.Service.TestServer, Cactus.Service" service="Cactus.IService.TestInterface,Cactus.IService" />
        <component  type="Cactus.Service.SiteConfigService, Cactus.Service" service="Cactus.IService.ISiteConfigService,Cactus.IService" />
        <component  type="Cactus.Service.ActionGroupServer, Cactus.Service" service="Cactus.IService.IActionGroupServer,Cactus.IService" />
        <component  type="Cactus.Service.ActionServer, Cactus.Service" service="Cactus.IService.IActionServer,Cactus.IService" />
        <component  type="Cactus.Service.RoleServer, Cactus.Service" service="Cactus.IService.IRoleServer,Cactus.IService" />
        <component  type="Cactus.Service.UserServer, Cactus.Service" service="Cactus.IService.IUserServer,Cactus.IService" />
      </components>
    </autofac>

    然后在autofac.config中注册服务,type是实现的server,service是接口

    在MVC中的使用,根据的是构造函数注入

    public class AdminLoginController : Controller
        {
            public readonly IUserServer userServer;
            public AdminLoginController(IUserServer userServer)
            {
                this.userServer = userServer;
            }
            public ActionResult Index()
            {
                userServer.xxxxx//随便写
                return View();
            }
    }

     属性注入可以参考这篇文章http://www.cnblogs.com/peteryu007/p/3449315.html

  • 相关阅读:
    flask 数据迁移
    docker daemon 配置代理
    dbcm with kubenetes
    curl 访问 k8s
    kubernetes 集群安全配置
    k8s dashboard
    k8s v1.5.8 单节点搭建
    etcd raft library
    split files test
    ubuntu两个python版本共存并切换默认版本
  • 原文地址:https://www.cnblogs.com/RainbowInTheSky/p/4531786.html
Copyright © 2011-2022 走看看