• castle 组件化开发应用配制示例


    示例

    Windsor 实现IOC容器配制, 暴露接口,通过配制文件指定接口实现,从而降低系统内部依赖 C# Code:

    IWindsorContainer container = 
                    new WindsorContainer(
                        new XmlInterpreter(new ConfigResource("castle")));

    Interface1 myInstance= container.Resolve<Interface1>("Interface1");
    // or 
    myInstance= container.Resolve<Interface1>();

     App.Config or Web.config 配制

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section  name="castle"   type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler, Castle.Windsor" />
      </configSections>
      <castle>     
        <include uri="file://castleconfiguration.xml"/>    
      </castle>
    </configuration>

    castleconfiguration.xml  如果是window应用程序,需要把此配制文件copy到bin目录。Windsor Schema 是用来定义配制文件结构的

    注意:

    1. 可以配制生命周期:lifestyle=singleton|thread|transient|pooled|custom|
    2. 配制构造函数:<parameters>....<参数名>值</参数名>....</parameters>
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration xmlns="MyWindsorSchema">
      <components>
        <component id="httpservicewatcher"  type="GettingStartedPart1.HttpServiceWatcher, GettingStartedPart1">
          <parameters>        
            <notifiers>
              <array>
                <item>${email.notifier}</item>
                <item>${alarm.notifier}</item>
              </array>
            </notifiers>
            <Url>different url</Url>
          </parameters>
        </component>
        <component  id="email.notifier"  service="GettingStartedPart1.IFailureNotifier, GettingStartedPart1"  type="GettingStartedPart1.EmailFailureNotifier, GettingStartedPart1" />
        <component  id="alarm.notifier"  service="GettingStartedPart1.IFailureNotifier, GettingStartedPart1"  type="GettingStartedPart1.AlarmFailureNotifier, GettingStartedPart1" />
        <component  id="form.component"  type="GettingStartedPart1.Form1, GettingStartedPart1"  />
        <component  id="Interface1"     service="GettingStartedPart1.Interface1, GettingStartedPart1" type ="GettingStartedPart1.Class1, GettingStartedPart1" lifestyle="transient" />
        <component  id="Interface2"     service="GettingStartedPart1.Interface1, GettingStartedPart1" type ="GettingStartedPart1.Class2, GettingStartedPart1" lifestyle="transient" />      
      </components>  
    </configuration>

    Service look up notation

    The following notation is used to describe a service reference.

    ${componentid}

    Configuration Property evaluation

    This notation is used with a properties node and allows the developer to expand the value on the properties node to as a node value or attribute value. #{propertyname}
  • 相关阅读:
    iOS MJRefresh的使用 (列表上拉加载更多)
    iOS 后台任务
    ios Alamofire网络插件的使用
    springboot shiro ehcache redis 简单使用
    android BottomNavigationView 简单使用
    iOS ksyhttpcache音视频缓存
    springboot 简单使用shiro登录
    springboot 使用 mybatis + mapper
    [LeetCode] Permutations
    【经典算法】回溯算法
  • 原文地址:https://www.cnblogs.com/sgciviolence/p/1223691.html
Copyright © 2020-2023  润新知