zoukankan      html  css  js  c++  java
  • 有关WCSF的几点整理

    本文示例代码

    一、CreateNew Attribute实现属性注入

    Steps:

    1/ aspx创建某个服务的属性。

    2/ 为其添加[CreateNew] Attribute。

    3/ 页面继承自Microsoft.Practices.CompositeWeb.Web.UI.Page,而非System.Web.UI.Page。

    1 public partial class Sample : Microsoft.Practices.CompositeWeb.Web.UI.Page
    2 {
    3     [CreateNew]
    4     public ComputeService ServiceForCompute
    5     {
    6         set;
    7         get;
    8     }
    9 }

    运行页面。黄页,发生错误。

    解决办法:

    4/ 为web site添加Globe文件,使Application继承自Microsoft.Practices.CompositeWeb.WebClientApplication。

    1 <%@ Application Language="C#" Inherits="Microsoft.Practices.CompositeWeb.WebClientApplication" %>

    二、InjectionMethod Attribute

    在class中,[InjectionMethod]修饰过的方法将在该类实例化的时候执行,仅次于类的constructor。

    三、使用StateValue<T>进行值的持久化

    StateValue<T>值的存取是通过Session来完成的,这也就实现了变量的持久化。

    Steps:

    1/ 声明一StateValue<int>变量。

    2/ 在class的初始化方法中(标记了[InjectionMethod]的方法),通过StateDependency为其注入指定Key值的Session。

    3/ 页面可以任意的对其赋值、取值。

     1 private StateValue<int> m_ResultValue;
     2 public int ResultValue
     3 {
     4     get
     5     {
     6         return m_ResultValue.Value;
     7     }
     8     set
     9     {
    10         m_ResultValue.Value = value;
    11     }
    12 }
    13 
    14 [InjectionMethod]
    15 public void InitState([StateDependency("result")]StateValue<int> resultValue)
    16 {
    17     m_ResultValue = resultValue;
    18 }

    [StateDependency("result")]意味着parameter resultValue的内容从Session["result"]注入。

    四、InjectionConstructor Attribute

    用来修饰类的构造函数,指明该类需被某处注入时,默认调取的constructor。一个class中,最多有一个构造函数可标记该标签。

    五、module services的注册和使用

    (1) 以module为单位对其内的Services进行注册。

    Steps:

    1/ 为每一module创建一个(且只创建一个)继承自ModuleInitializer的类,override其中的Load方法,完成服务的注册。

     1 public override void Load(CompositionContainer container)
     2 {
     3     base.Load(container);
     4 
     5     AddModuleServices(container.Services);
     6 }
     7 
     8 protected virtual void AddModuleServices(IServiceCollection moduleServices)
     9 {
    10     moduleServices.AddNew<SecondService, ISecondService>();
    11 }

    2/ 在Web.config中配置需加载的modules。

    1 <module name="Calculation" assemblyName="Modules" virtualPath="~/"></module>

    assemblyName指明需注册Services的dll来源。在站点初始化的时候,通过指定的dll,由反射的方式找到其中继承自ModuleInitializer的类,完成容器内服务的注册。

    (2) 由ServiceDependency标签使用依赖注入容器内的服务

    Interface被ServiceDependency标记,意味着从容器内获取其实现类。

    1 [InjectionConstructor]
    2 public ComputeService([ServiceDependency] ISecondService secondService)
    3 {
    4     this.m_SecondCalculateService = secondService;
    5 }
  • 相关阅读:
    Mybatis+MySql 一个标签中执行多条sql语句 这个坑 ,我心中有一句MMP
    Springboot 统一异常处理
    Springboot中jar 重复冲突 导致 静态资源加载问题!
    zookeeper 命令行使用
    Storm 提交任务过程详解 (不对地方麻烦指正)
    kafka 集群安装过程
    Storm 集群安装
    hbase运行时ERROR:org.apache.hadoop.hbase.PleaseHoldException:Master is initializing的解决方法
    HBase架构原理详情
    红黑树(一) 原理和算法介绍
  • 原文地址:https://www.cnblogs.com/isun/p/4217949.html
Copyright © 2011-2022 走看看