zoukankan      html  css  js  c++  java
  • c# castle.window ioc

    1.注意的是配置文件"configSections"节点中不能有同级节点。

    封装代码如下:

    using Castle.MicroKernel;
    using Castle.Windsor;
    using Castle.Windsor.Configuration.Interpreters;
    using Castle.Windsor.Installer;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Da.Extend
    {
        public class CastleContainer
        {
            private static readonly object _locker = new object();
            private static CastleContainer _instance;
            private static IKernel _kernel;
    
            private CastleContainer()
            {
                Castle.Core.Resource.ConfigResource source = new Castle.Core.Resource.ConfigResource("castle");
                XmlInterpreter interpreter = new XmlInterpreter(source);
                IWindsorContainer windsor= new WindsorContainer(interpreter);
                _kernel = windsor.Kernel;
            }
    
            public static CastleContainer CreateInstance()
            {
                if (_instance == null)
                {
                    lock (_locker)
                    {
                        if (_instance == null)
                        {
                            _instance = new CastleContainer();
                        }
                    }
                }
                return _instance;
            }
    
            public T Resolve<T>()
            {
                return _kernel.Resolve<T>();
            }
    
    
        }
    }

    配置文件:

    <?xml version="1.0"?>
    <configuration>
      <configSections>
        <section name="castle" type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler,Castle.Windsor"/>
      </configSections>
      <castle>
        <components>
          <component   id="IUserDao"   service="Da.Dao.IUserDao,Da.Dao"   type="Da.Dao.UserDao,Da.Dao" />
        </components>
      </castle>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
      </startup>
    </configuration>

    调用代码:

    var userService = new UserService();
                userService.usrDao = CastleContainer.CreateInstance().Resolve<IUserDao>();
                userService.Add(10);
  • 相关阅读:
    android SD卡文件的读写
    Android Junit 单元测试步骤
    android xml解析之SAX
    android赚钱 植入有米广告方法
    android广告平台介绍
    读、写其他应用的SharedPreferences
    SQL数据基本操作
    res/raw下的资源文件读写
    容易吗?
    写给实习生的邮件
  • 原文地址:https://www.cnblogs.com/joyet-john/p/7240567.html
Copyright © 2011-2022 走看看