zoukankan      html  css  js  c++  java
  • MEF在WCF REST中实际应用2(Global.asax注册)

    IOCContainer文件:

     public class IOCContainer
        {
            /// <summary>
            /// 容器
            /// </summary>
            public static CompositionContainer Container { get; private set; }
    
            private static IOCContainer instance = new IOCContainer();
    
            private IOCContainer()
            {
                if (Container == null)
                {
                    try
                    {
                        //获取包含当前执行的代码的程序集
                        //var path1 = AppDomain.CurrentDomain.BaseDirectory + "\bin"; //另一种写法
                        string codeBase = Assembly.GetExecutingAssembly().CodeBase;
                        UriBuilder uri = new UriBuilder(codeBase);
                        string path = Uri.UnescapeDataString(uri.Path);
                        path = Path.GetDirectoryName(path);
    
                        //创建一个程序集目录,用于从一个程序集获取所有的组件定义
                        var catalog = new DirectoryCatalog(path, "WIP_BLL.dll");
                        //创建容器
                        Container = new CompositionContainer(catalog);
                        //_container.ComposeParts(this); //将部件(part)和宿主程序添加到组合容器,此时会初始化除了懒加载之外的Import的对象,
                        //执行组合 【组合这一行代码,并不影响我们的使用,有没有皆可】
                        Container.ComposeParts();
                    }
                    catch (Exception ex)
                    {//吞掉异常
                        LogHelper.WriteErrorLogByLog4Net(typeof(IOCContainer), "注册MEF出错:ex:" + JsonConvert.SerializeObject(ex));
                    }
                }
            }
    
            /// <summary>
            /// 注册
            /// </summary>
            /// <returns></returns>
            public static IOCContainer RegisterContainer()
            {
                return instance;
            }
    
        }

    Global.asax:

    使用:

       DataReportView ret = IOCContainer.Container.GetExport<IDayReportDataBLL>("DayReportData").Value.GetDayReportData(storeDateTime, storeDate);
  • 相关阅读:
    一本通课后练习 / 高手训练
    毒瘤 dp 题做题记录
    埃及分数
    CF340E Iahub and Permutations
    NOI2020 SDOI 爆零记
    Codeforces *1400-1600 做题记录
    Codeforces Round #636 (Div 3) 题解
    Codeforces Round #634 (Div 3) 题解
    洛谷 P4231 三步必杀
    【洛谷】【线段树+位运算】P2574 XOR的艺术
  • 原文地址:https://www.cnblogs.com/schangxiang/p/11229962.html
Copyright © 2011-2022 走看看