代码改变世界

在Silverlight自定义控件中添加依赖属性

2012-01-06 15:48 by ps_zw, 973 阅读, 1 推荐, 收藏, 编辑
摘要:前言 最近项目中在使用Silverlight做开发,需要用到自定义属性,便有了此文。(纯属学习使用阶段)准备工作 场景:要求文本框中输入值都是大写字母; 实现方式:通过自定义属性形式实现; 前期工作: 新建工程"CustomControlDemo_SL",并添加类:MyTextBox,使其继承自TextBox.自定义依赖属性 先看一下如何自动生成依赖属性的模板:在类MyTextBox中:输入"propd” –> tab键两次,便可生成定义依赖属性的模板,如下图:输入"propdp":tab键后生成的结构如下图:有时候我们需要通过简单的属性 阅读全文

我学MEF系列(7):动态装配Silverlight组件

2011-12-29 13:12 by ps_zw, 1476 阅读, 0 推荐, 收藏, 编辑
摘要:前言上一篇文章具体介绍到了如何在Silverlight中使用MEF,为了使SL扩展控件能够组合成功,我们在MEFDemo_SL中添加了对项目MEFDemo_SL.Extensons的引用,并在MainPage中using了扩展控件的命名空间。这看似有点不合逻辑,的确,这么做怎么都觉得很怪异,组件应该能够被动态发现。本篇文章就介绍一下如何动态加载dll。动态加载动态发现并加载silverlight的dll,需要先使用webclient将dll下载到客户端,再使用MEF进行组合。我们对上一篇文章的例子进行简单的修改:1.在MEFDemo_SL.Web中新建文件夹Parts,将MEFDemo_SL. 阅读全文

我学MEF系列(6):在Silverlight中应用MEF

2011-12-20 20:35 by ps_zw, 1821 阅读, 2 推荐, 收藏, 编辑
摘要:前言 通过前面MEF的基础知识的学习,我们已经知道MEF可以在控制台程序中寄宿。MEF还可以在Winform,Silverlight,WPF等应用程序中使用。在接下来的几篇文章中我们就重点介绍MEF是如何在这些应用程序中使用的。本文通过一个例子介绍MEF在Silverlight中的简单应用。正文第一步:打开VS2010新建一个Silverlight应用程序,命名为"MEFDemo_SL"。一路默认最后Solution的结构如下:在MainPage的设计器中添加一个容器控件,我们在这里添加一个TabControl(Name设置为"tcContainer") 阅读全文

我学MEF系列(5):创建策略(Creation Policy )和生命周期(Life Cycle)

2011-12-14 23:32 by ps_zw, 3575 阅读, 1 推荐, 收藏, 编辑
摘要:前言在前面的介绍中我们已经知道:导入和导出的匹配成功需要ContractType,ContractName,Metadata都匹配,这里我们还要介绍一个新的东西:创建策略(creation policy )。有时候我们在容器中的实例在每一个导入之间共享,即单例;有时候我们需要让每一个导入都拥有一个各自的实例,这在MEF中就是有创建策略决定的。生命周期(Life Cycle),每一个MEF的部件在容器中都有自己的生命周期,何时创建,何时释放等。本文就主要介绍一下MEF中得创建策略和生命周期创建策略 创建策略,其实就是组合容器决定如何创建部件。在组合容器组合部件时,如果导入和导出匹配成功,则组合容 阅读全文

我学MEF系列(4):组合容器(CompositionContainer)和目录(Catalog)

2011-12-12 00:12 by ps_zw, 6661 阅读, 2 推荐, 收藏, 编辑
摘要:前言 通过之前的文章,我们已经了解了MEF中的导入(Import)和导出(Export)。在本系列的第一篇文章中我们知道MEF其实还包括另外两个核心内容:组合容器(CompositionContainer)和目录(Catalog)。组合容器 Castle有容器,Unity有容器,同样作为一个能够提供扩展机制,能够支持依赖注入的框架肯定也有容器。MEF的组合模型的核心是组合容器,该容器包含所有可用的部件并执行组合操作 (即,将导入和导出配对)。通常我们使用的组合容器是:CompositionContainer ,MEF还提供一个组合对象:CompositionBatch。目录 前面我们有谈... 阅读全文

我学MEF系列(3):导入(Import)和导出(Export) (续)

2011-12-09 23:21 by ps_zw, 3213 阅读, 1 推荐, 收藏, 编辑
摘要:前言:在上一篇中,我们简单的介绍了导入和导出的基本知识以及一些基本用法,本篇将介绍一下在导出中经常使用的到两种技巧(其实就是MEF提供的两种特性):元数据(Metadata)和自定义导出(Custom Export)元数据 在MEF中,导出可提供自身的一些附加信息,我们称之为“元数据”。可通过元数据将导出的一些信息、属性传递给导入。上一篇介绍导入的时候提到了ImportMany,在ImportMany的时候有时候可能需要根据特定的条件过滤一些匹配的导出,这时我们可以利用导出的元数据作依据。此外,由于导入部件可以使用元数据来决定要使用哪些导出,或收集有关导出的信息而不必构造导出。 因此,导入必. 阅读全文

我学MEF系列(2):导入(Import)和导出(Export)

2011-12-04 23:20 by ps_zw, 4038 阅读, 0 推荐, 收藏, 编辑
摘要:前言:MEF不同于其他IOC容器(如:Castle)很重要的原因在于它使用了特性化编程模型,何为特性化编程这里不细究,简单说明下两个概念:“特性”和“编程模型”: 特性(Attribute):举例来说就是我们在开发过程中在类上标记的如:[Serializable]的标签。 编程模型(Programming Model):MEF中的编程模型是定义 MEF 所操作的概念性对象集的特定方法。MEF默认使用特性化编程模型,但是用户也可自定义编程模型。 导入(Import),导出(Export)是MEF扩展性机制实现的基础,是非常重要的两种部件。MEF中导入、导出部件均是通过特性来确定的(如:标记... 阅读全文

我学MEF系列(1):MEF是什么

2011-11-27 13:33 by ps_zw, 6347 阅读, 3 推荐, 收藏, 编辑
摘要:前言: 一种新技术,一个新框架的出现并不是偶然的,它们都是为了解决一定的实际问题。如今IT各种技术、框架的更新很迅速,一步留神就感觉自己out了,当然,技术没有优劣好坏之分,能更好的解决实际问题我们就使用它。MEF也是一样,它能解决很多的现实问题,当然它也有它的局限性。现实问题: 在开发大型应用程序,特别是客户端程序,我们会把各个独立的模块/功能包装成一个个小的组件,程序运行时按需加载。这样,我们就要求程序具有很好的扩展能力,包括但不限于以下列出的几个方面:1. 按需加载组件 ,动态可拆卸(可动态发现、重用和组合); 2. 能够在已投产的产品中灵活的加入新功能;3. 能够支持第三方扩展。如何解 阅读全文

使用OpenXML将Excel内容读取到DataTable中

2011-11-22 23:32 by ps_zw, 1402 阅读, 0 推荐, 收藏, 编辑
摘要:前言:前面的几篇文章简单的介绍了如何使用OpenXML创建Excel文档。由于在平时的工作中需要经常使用到Excel的读写操作,本文再接再厉,简单的介绍下使用OpenXML读取Excel中得数据。当然使用OpenXML将数据读取成什么格式并不重要,本文仅仅介绍如何读取到DataTable中。 准备工作: 1. Excel2007文档一个; 2. OpenX... 阅读全文

两种OpenXML创建Excel单元格的方式比较

2011-11-20 11:48 by ps_zw, 2027 阅读, 1 推荐, 收藏, 编辑
摘要:先给两种使用OpenXML创建Excel单元格的代码第一种:private Cell CreateTextCell(int columnIndex, int rowIndex, object cellValue, Nullable<uint> styleIndex){ Cell cell = new Cell();//创建单元格 cell.DataType = CellValues.InlineString;//设置单元格的数据类型 cell.CellReference = GetCellReference(columnIndex) + rowIndex; //设置单元... 阅读全文