上一篇我们已经获得了制定类型的实例,但我们还无法对其进行有效的控制. 我们用ExportMetadata属性可以对具体的某个实例做标记,相当于命名.这么理解不知道对否. 在IPart项目中添加一个接口IPatMetadata namespace IPart { public interface IPatMetadata { string Extension { get; }//以后缀名来区分,特别需要注意,这里的名称要和ExportMetadata里面的一致. } } 在导出的地方添加具体的导出…
上一篇我们已经可以获取各种FileHandler的实例和对应的元数据.本篇,我们做一个稍微完整的文件管理器. 1.修改接口IFileHandler,传入文件名 namespace IPart { public interface IFileHandler { void Process(string fileName); } } 2.修改具体的FileHandler. using IPart; using System; using System.ComponentModel.Compositio…
我们已经成功的达到了目标,大量减少了if else. 不过在园子里面的文章大多,用的是Import.ImportMany.So,修改主函数. using IPart; using System; using System.Collections.Generic; using System.ComponentModel.Composition; using System.ComponentModel.Composition.Hosting; using System.Linq; namespace…
在上一篇文章中,我们已经学到了很基本的MEF概念和使用方法. 但我们导出的是一个object类型的实例,只能用来tostring,没有引用部件类库,也不能用里面的成员方法. 本篇,我们逐渐往简单的文件管理器的目标靠拢. 新建类库IPart,添加一个接口IFileHandler.cs namespace IPart { public interface IFileHandler { void Process(); } } Parts类库和主项目meftest均引用IPart Parts类库中,将要…
起因:工作需要针对不同类型的文件做不同的处理.打个比方,txt文件,直接打印,doc文件,直接发email,jpg文件,上传xxx相册站点. 其实这个问题在学习最基本的工厂模式的时候早已经解决了,稍有点面向对象基础的,都可以写出这样一个文件管理器.再有新类型文件处理的时候,只需要在加一个实现类,再在工厂里面加一个if判断,返回一个具体的处理实例即可,上层不必改动. 要干掉工厂里面的if,则必须要请出ioc容器了.MEF就是微软自家的托管可扩展框架,在这里被我用成了ioc容器,其他的功能,不求甚解…
一.概述 "光说不练假把式." 官网上的介绍多少让人迷迷糊糊的,各种高大上的词语仿佛让 NiFi 离我们越来越远. 实践是最好的老师.那就让我们试用一下 NiFi 吧! 二.安装 由于我的整个学习和使用过程都是在 Linux 下完成,所以,整个教程也是面向 Linux 用户的. 其他系统下的使用方法类似,如有其他系统的用户,那么还请有选择性的进行参考本教程. NiFi 是免安装地,仅需从官网下载压缩包,然后解压,旋即完成了整个安装过程. 官网下载压缩包:nifi.apache.org/…
salesforce 零基础开发入门学习(六)简单的数据增删改查页面的构建   VisualForce封装了很多的标签用来进行页面设计,本篇主要讲述简单的页面增删改查.使用的内容和设计到前台页面使用的标签相对简单,如果需要深入了解VF相关知识以及标签, 可以通过以下链接查看或下载: https://resources.docs.salesforce.com/200/latest/en-us/sfdc/pdf/salesforce_pages_developers_guide.pdf 下面以一个单…
4. Flexpaper简单使用 通过上面三章的内容,大家对Flexpaper.SWFTools应该有大概的了解了,SWF文件也已经生成了,我们开始进入Flexpaper的使用的介绍. 本章中只演示Flexpaper在WEB页面上的使用,我们要下载一个Flash版本的FlexPaper,这里我选择了FlexPaper_1.5.0_flash. 下载地址:http://code.google.com/p/flexpaper/downloads/list 下载.解压后,可以看到包含如下文件: 主要文…
原文链接:linux简单之美(三) 在linux简单之美(二)中我们尝试使用了C库的函数完成功能,那么能不能用syscall方式来搞呢?显然可以! section .data ft db section .text global _start _start: again: dec edi mov eax,edi add eax,0x30 ],al mov ecx,ft int 0x80 mov ebx,esp int 0x80 jnz again mov ecx,msg int 0x80 int…
服务端JavaScript 众所周知的,JavaScript是运行在浏览器的脚本语言,JavaScript通常作为客户端程序设计语言使用,以JavaScript写出的程序常在用户的浏览器上运行.直至Nodejs的出现,Node.js大部分基本模块都用JavaScript语言编写,Node.js的出现使JavaScript也能用于服务器端编程.Node.js含有一系列内置模块,使得程序可以脱离Apache HTTP Server或IIS,作为独立服务器运行. Node.js概况 Node.js允许…