Visual Studio 2010层架构验证的实现

  当设计一个应用程序时,基本的要求是所有的通信信息交互都要通过定义的接口进行,不能让应用程序直接调用该接口的类别或方法。所以,可以通过Layer Diagram来展示这个架构上的想法。

  我们将使用一段非常简单的代码,主要强调的是代码所代表的概念,而不是代码的细节。并将在现有代码层关系架构逻辑设计分析的基础上进行层验证(Layer Validation)功能:

  ①打开Visual Studio 2010,通过Modeling Projects模板指定解决方案(Solution)的名称为LayerValidation(File|New|Project命令,选择ModelingProject,命名为LayerValidation),并提供创建一个名为“Client”的C#控制台程序,单击“OK”按钮。

  ②在解决方案浏览器中,使用鼠标右键单击Solution节点,选择“New Project…”命令,在弹出的对话框中选择“Class Library”并将工程命名为“Implementation”。

  ③重复以上几步,创建名为“Interfaces”和“Creators”的Class Library工程。展开Interfaces工程节点,用鼠标右键单击Class1.cs,选择“Rename”命令,将该文件重命名为“IDataRetriever.cs”,并在弹出的对话框中选择“Yes”。文档编辑窗口和Solution Explorer如图5所示。

图5  文档编辑窗口和Solution Explorer

  ④把class的关键字改为interface,将IDataRetriever变成一个接口。为IDataRetriever添加一个get属性,该属性返回一个IData类型的对象。在IData下面有红色波浪线,表示IData不存在。Visual Studio 2010的新功能可以自动解决这个问题:用鼠标右键单击出错的IData,选择“Generate”命令,然后选择“Other…”命令,将看到一个“New Type”对话框。将其中的“Access:”修改为“public”,将“Kind:”修改为“interface”,其他的保留默认设置,单击“OK”按钮。VS会自动向Interfaces工程添加一个IData.cs文件,并在文件中创建一个名为IData的接口。

  ⑤展开Implementation工程节点,用鼠标右键单击References节点,选择“Add Reference…”命令,在弹出的对话框中选择Projects页,然后选择Interfaces工程,单击“OK”按钮。

  ⑥将Class1.cs重命名为DataRetriever.cs。打开DataRetriever.cs文件,修改DataRetriever类使其实现IDataRetriever接口。当输入IDataRetriever的时候没有出现智能输入支持,可以手动输入IDataRetriever,然后会发现IDataRetriever下面又出现了红色波浪线。将鼠标移动到IDataRetriever上,会注意到在这个单词开始的位置下方有一个方形的小图标。单击它并选择“using Interfaces;”命令,它会自动为你添加所需的using语句,如图6所示。 

图6  自动化提示添加代码语句(名字空间)

  现在“using Interfaces”已经自动添加好了。再次选中这个图标,不过这次选择“Implement interface ‘IDataRetriever’”命令,可自动生成“DataRetriever”代码文件。如上所示,创建了一个对象,调用了对象的一个属性,然后抛出一个“NotImplementedException”异常,程序描述了一个实际系统中经常遇到的问题。

  ⑧接下来向Client工程中添加到Implementation和Interfaces工程的引用。打开Client工程中的Program.cs文件,参考代码如下:

   using System;  
using System.Collections.Generic;
.
using System.Linq;
using System.Text;
using Implementation;
using Interfaces;

namespace Client
{
class Program
{
static void Main(string[] args)
{
DataRetriever dr
= new DataRetriever();
IData data
= dr.Data;
}
}
}

NET技术Visual Studio 2010层架构验证的实现,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。