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 }
  • 相关阅读:
    day91:luffy:基于vue+drf的路飞学城项目后端部署
    day90:luffy:基于vue+drf的路飞学城项目前端部署
    day89:luffy:使用Celery完成我的订单超时取消&Polyv视频加密播放
    day88:luffy:支付宝同步结果通知&接收异步支付结果&用户购买记录&我的订单
    day87:luffy:结算页面积分&支付宝接口
    day86:luffy:前端发送请求生成订单&结算页面优惠劵的实现
    day85:luffy:购物车根据有效期不同切换价格&购物车删除操作&价格结算&订单页面前戏
    C++中子类出现与父类同名成员函数如果调用父类函数
    C++继承方式引起子类中继承的父类属性访问权限的改变 && C++对象大小
    C++引用传递和指针传递区别
  • 原文地址:https://www.cnblogs.com/isun/p/4217949.html
Copyright © 2011-2022 走看看