不应被遗忘的项目模板

转载 2007年09月29日 12:35:00

1.          问题的引出

在一些较大型的项目中,为了可重用,易维护,常常将系统设计为可插接式的,就是用一个框架将很多个小的组件组装起来。有时一个系统中的组件有数百个之多,而这些组件都要去调用一组类库,对应到.NET中就是有很多个程序集。如下图:

 

 

在这种结构下,在开发时我们就要建很多个项目,这些项目的内部组织方式可以根据其功能进行分类的,比如常见的有:对数据进行列表,对表进行维护,显示打印报表等。对于一个进行单表维护的项目,一般要用到验证,日志,数据访问,自定义控件等,这样就要添加对应程序集的引用。对单表维护而言,界面上控件的摆放,执行的操作,有很多都是相似的。

所以可以想像一下,上百个工程,每个工程都要添加引用,然后给窗体上添加控件,写一些类似的代码。这样的工作烦琐而又容易在工程间产生不一致性,为了解决这些问题,我们可以使用项目模板。

 

2.          为什么是项目模板

l         为什么不使用代码生成:

代码生成对UI层的能力很有限,特别是winform下的窗体,里面有很多设计器生成的代码,代码生成也可以对付,但是不是最佳的选择。而且和VS.net整合度不好。

l         为什么不使用继承:

我们也可以使用继承,但是窗体的继承会有很多麻烦,常见的就是控件大小莫名其妙的自己变化,子窗体使用设计器打不开,显示一片白等情况。虽然我们可以通过.net的工具DbgClr来调试,查找问题。但是相比能带来的好处而言,付出的代价还是太大了。

l         为什么使用项目模板:

n         足够的灵活度:可以自定义项目的引用,包含的文件,可以使用向导接收用户输入,替换代码中的内容,和代码生成中的代码模板功能相似。

n         便于使用:可以将整个过程都集成到Vs.net中,直接通过新建项目来使用自定义的模板,一次完成项目的共通操作。还可以自定义项模板,通过新建文件来添加自己的特定分类的文件。

n         提高代码的一致性:开发人员都使用相同的模板,项目所引用数据集的顺序和版本,是否拷贝到本地等属性都是一致的。文件的命名也是一致的,有规则的。初始生成的代码结构也是一致的。

 

3.          怎样制作项目模板

本来想写写如何制作模板,但是msdn中已经有很详尽的说明了,所以这里只介绍几个重要的操作。

l         如何导出模板:

可以新建一个项目,把它作为模板,定义引用,包含的文件,窗口的公共部分等,然后使用“文件”菜单里的“导出模板”,通过向导来将这个项目保存为模板,这样你就可以在新建项目的选项里看到刚导出的模板,使用它来新建你的项目。

l         如何使用向导:

你也可以在新建项目时使用向导来使你的项目模板能够获取更多的信息,建立向导主要使用Iwizard接口,新建一个类库项目,使一个类从Iwizard接口继承,并新建窗体,用来接收用户输入,然后在实现IwizardRunStarted的方法中接收输入,并置入到replacementsDictionary参数中。然后打开模板的.zip文件,配置其中的. Vstemplate文件,在其中添加WizardExtension项来使用刚才的向导项目。

l         如何建立自己的模板分类:

如果你使用“导出模板”功能,在新建项目的时候,你的模板会出现在列表的最下方,如果你想让你的模板和VS.net的模板放在一起并出现在新建项目对话框中,你可以把模板拷贝到VS.net安装目录的/Common7/IDE/ProjectTemplates/Csharp目录下,并且在命令行中执行devenv /setup。完成后你的模板就和Vs.net的模板在一起显示了。也可以在这里新建一个目录,下面放入自己的模板,这样就创建了一个项目分类。

 

 

相关文章推荐

启动WebLogic服务时,出现“此时不应有xxxjdk”

环境: win7(64bit)      webLogic10.3.3.0 安装WebLogic的时候需要注意:JDK安装路径不能带有空格、括号、中文的路径和特殊字符。我是64位系统,当时选择JD...

媒体:中国大学不应培养“精致的利己主义者”

“即便我们再拿几个诺贝尔奖、再取得几个大的科技突破、再出现几个重大新药创制,对于我们这样一个对人类文明做出过历史性贡献的民族来讲,也都是应该的。我们目前对于世界文明的贡献远远不够……”日前召开的“科技...

Item 25 不应抛出异常的swap

通用的swap可以在stl里找到:namespace std { template // 1. std::swap的实现 void swap(T& a, T& b) { T te...

评《乔布斯不应成为年轻人学习的榜样》

编者按:本文作者为雷锋网的一位读者,ID为cyccyc621。雷锋网在2012年2月18日转帖了速途网的一篇文章《乔布斯不应该成为年轻人学习的榜样》,引来了众多读者的各种评论,我们注意到cyccyc6...

为什么程序员不应调用“sun”包?

J2SE API Documents是我们最常用的参考手册,但细心的朋友可能会发现,在“%JAVA_HOME%\jre\lib\rt.jar”中包含比API文档更多的类,那么其它的类为什么没有在帮助文...

【安卓】给gallery内"控件"挂载事件,滑动后抬起手指时也触发事件(滑动时不应触发)的解决、!

思路: 1.gallery内控件挂载事件(如:onClickListener)的方法类似listview,可直接在baseAdapter.getView内给控件挂载(具体方法百度)。 2.貌似没问题,...

为什么软件不应有主人

为什么软件不应有主人作者:Richard Stallman数字信息技术令大众更容易复制和更改资料。然而不是所有人都希望这样。版权制度允许软件有“主人”。他们主要的目的在于从公众夺取软件的潜在利益。他们...

[转]诺奖得主警告人类不应和外星人说话

人类是否应该向外星人暴露自己的位置?诺贝尔物理学奖获得者布莱恩·施密特认为,这是非常不明智的。“我认为向外星人暴露我们在哪儿恐怕不是一件明智的事。任何与外星人的接触可能都不是一件愉快的事。” “...
  • wwwid
  • wwwid
  • 2012-08-28 14:56
  • 1192

程序员不应轻易当真的那些话

程序员不应轻易当真的那些话 一、只要好好工作就会给你加薪的 我只能说很傻很天真。 二、只要技术牛X就能混得好 技术的高度没有止境,比起你不分白天黑夜的编程,那些钻研于口才的也许...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)