zoukankan      html  css  js  c++  java
  • castle windsor学习-----Inline dependencies 依赖

    应用程序中的很多组件都会依赖其他的服务组件,很多依赖一些不合法的组件或者容器中没有的组件,例如int类型、string类型、TimeSpan类型

    Windsor支持以上的场景,注册API有DependsOn方法。该方法接收一个参数(由Dependency类的静态方法返回值提供)

    1. 支持静态依赖 Dependency.OnValue

    var twitterApiKey = @"the key goes here";
    
    container.Register(
        Component.For<ITwitterCaller>().ImplementedBy<MyTwitterCaller>()
            .DependsOn(Dependency.OnValue("APIKey", twitterApiKey))
    );

    这个例子通过名称进行依赖匹配,它将提供对应的值给MyTwitterCaller类中名为“APIKey”的属性或者构造函数参数

    2.通过类型依赖

    var config = new TwitterApiConfiguration {
        // set all the properties here...
    };
    
    container.Register(
        Component.For<ITwitterCaller>().ImplementedBy<MyTwitterCaller>()
            .DependsOn(Dependency.OnValue<TwitterApiConfiguration>(config))
    );

    3. 设置属性 Setting up properties: Property.ForKey()

    container.Register(
        Component.For<ICustomer>().ImplementedBy<CustomerImpl>()
            .DependsOn(Property.ForKey("Name").Eq("Caption Hook"), Property.ForKey("Age").Eq(45)));

    4. 明确的服务依赖 Dependency.OnComponent()

    container.Register(
        Component.For<ITransactionProcessingEngine>().ImplementedBy<TransactionProcessingEngine>()
            .DependsOn(Dependency.OnComponent("Logger", "secureLogger"))
    );

    5. 依赖配置文件 appSettings dependencies: Dependency.OnAppSettingsValue()

    container.Register(
        Component.For<ITwitterCaller>().ImplementedBy<MyTwitterCaller>()
            .DependsOn(Dependency.OnAppSettingsValue("timeout", "twitterApiTimeout"))
    );

    6. 

    container.Register(
        Component.For<MainViewModel>()
            .DependsOn(Dependency.OnResource<MyApp.Properties.Resources>("DisplayName", "MainWindowTitle"))
    );

    Embedded resource dependencies: Dependency.OnResource()

    7. Supplying dynamic dependencies

    container.Register(
        Component.For<ClassWithArguments>()
            .LifestyleTransient()
            .DynamicParameters((k, d) => d["createdTimestamp"] = DateTime.Now)
    );
  • 相关阅读:
    MapReduce的自定义结果文件名OutputFormat
    MapReduce的Mapper端JOIN
    服务器配置 隐藏apache和php的版本
    mysqldump参数详细说明
    PHP漏洞全解(PHP安全性/命令注入/脚本植入/xss跨站/SQL注入/伪跨站请求/Session劫持/HTTP响应拆分/文件上传漏洞)
    apache nginx 通过 rewrite 设置 禁止执行PHP程序
    javascript 数组的知识整理
    is_uploaded_file函数引发的问题
    php 读取文件头部两个字节 判断文件的实际类型
    discuz 数据字典大全
  • 原文地址:https://www.cnblogs.com/lanpingwang/p/6537138.html
Copyright © 2011-2022 走看看