本文示例代码

一、CreateNew Attribute实现属性注入

Steps:

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

2/ 为其添加[CreateNew] Attribute。

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

 public partial class Sample : Microsoft.Practices.CompositeWeb.Web.UI.Page
{
[CreateNew]
public ComputeService ServiceForCompute
{
set;
get;
}
}

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

解决办法:

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

 <%@ 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/ 页面可以任意的对其赋值、取值。

 private StateValue<int> m_ResultValue;
public int ResultValue
{
get
{
return m_ResultValue.Value;
}
set
{
m_ResultValue.Value = value;
}
} [InjectionMethod]
public void InitState([StateDependency("result")]StateValue<int> resultValue)
{
m_ResultValue = resultValue;
}

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

四、InjectionConstructor Attribute

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

五、module services的注册和使用

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

Steps:

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

 public override void Load(CompositionContainer container)
{
base.Load(container); AddModuleServices(container.Services);
} protected virtual void AddModuleServices(IServiceCollection moduleServices)
{
moduleServices.AddNew<SecondService, ISecondService>();
}

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

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

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

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

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

 [InjectionConstructor]
public ComputeService([ServiceDependency] ISecondService secondService)
{
this.m_SecondCalculateService = secondService;
}

有关WCSF的几点整理的更多相关文章

  1. dotNET跨平台相关文档整理

    一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...

  2. UWP学习目录整理

    UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...

  3. SQL Server 常用内置函数(built-in)持续整理

    本文用于收集在运维中经常使用的系统内置函数,持续整理中 一,常用Metadata函数 1,查看数据库的ID和Name db_id(‘DB Name’),db_name('DB ID') 2,查看对象的 ...

  4. kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  5. JAVA程序员常用软件整理下载

    ********为了大家学习方便,特意整理软件下载如下:*************Java类软件:-------------------------------JDK7.0:http://pan.ba ...

  6. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  7. GJM : C#设计模式汇总整理——导航 【原创】

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  8. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

  9. 安卓GreenDao框架一些进阶用法整理

    大致分为以下几个方面: 一些查询指令整理 使用SQL语句进行特殊查询 检测表字段是否存在 数据库升级 数据库表字段赋初始值 一.查询指令整理 1.链式执行的指令 return mDaoSession. ...

随机推荐

  1. 基于DCT的图片数字水印实验

    1. 实验类别 设计型实验:MATLAB设计并实现基于DCT的图像数字水印算法. 2. 实验目的 了解基于DCT的图像数字水印技术,掌握基于DCT系数关系的图像水印算法原理,设计并实现一种基于DCT的 ...

  2. java并发实战:连接池实现

    池化技术简介 在我们使用数据库的过程中,我们往往使用数据库连接池而不是直接使用数据库连接进行操作,这是因为每一个数据库连接的创建和销毁的代价是昂贵的,而池化技术则预先创建了资源,这些资源是可复用的,这 ...

  3. SkipList 之详细分析

    SkipList 俗称跳表,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB 都有用到它,它的效率和红黑树以及 AVL 树不相上下,但跳表的原理相当简单,只要你能熟练操作链表, ...

  4. 关于“CheckBox”通过表单提交的问题

    大多数时候CheckBox取值传到java后台都是通过js取值,ajax传值,今天改一离职同事的老代码,那家伙通过表单提交一些列的CheckBox设置,没想到的是后台死活接收不正常,name.valu ...

  5. IDELPHI是一个MIS系统初学者的乐园空间

    DELPHI的长处之一是MIS系统,此空间介绍了MIS中种种问题,及使用DELPHI XE做的办法. 为什么选择DELPHI? DELPHI是开发效率很高的一个工具,但也许很多人都喜欢选择微软.NET ...

  6. 【Hive三】Hive理论

    1. Hive基础 1. Hive基础 Hive基本概念 引入原因: Hive是什么 Hive数据管理 四种数据模型 Hive内部表和外部表 Hive数据类型 Hive的优化 Map的优化: Redu ...

  7. 在树莓派上用 python 做一个炫酷的天气预报

    教大家如何在树莓派上自己动手做一个天气预报.此次教程需要大家有一定的python 基础,没有也没关系,文末我会放出我已写好的代码供大家下载. 首先在开始之前 需要申请高德地图API,去高德地图官网注册 ...

  8. English_phonetic symbol

    Introduction 本人学习了奶爸课程---45天的搞定发音课,结合自己的英语水平,为自己撰写的一个系统的英语发音课,不只是音标,还有音标辨析.连读.音调等. 重点:英语发音时一个持续一生的东西 ...

  9. ruby 爬虫爬取拉钩网职位信息,产生词云报告

    思路:1.获取拉勾网搜索到职位的页数 2.调用接口获取职位id 3.根据职位id访问页面,匹配出关键字 url访问采用unirest,由于拉钩反爬虫,短时间内频繁访问会被限制访问,所以没有采用多线程, ...

  10. STM32_1 搭建工程框架

    搭建系统框架 -- 创建系统文件夹 -- 拷贝stm32库文件 -- 将文件添加至工程 -- 配置工程环境 1. 创建工程文件夹 找一个工程目录,我就在 stm32/Code 下创建一个模板工程Tem ...