(原创)c#学习笔记09--定义类05--类库项目

9.5  类库项目

  除了在项目中把类放在不同的文件中之外,还可以把它们放在完全不同的项目中如果一个项目什么都不包含,只包含类(以及其他相关的类型定义,但没有入口点),该项目就称为类库

  类库项目编译为.dll 程序集,在其他项目中添加对类库项目的引用,就可以访问它的内容(这可以是同一个解决方案的一部分,但这不是必须的)。这将扩展对象提供的封装性,因为类库可以进行修改和更新,而不会影响使用它们的其他项目。这意味着,您可以方便地升级类提供的服务(这会影响多个用户应用程序)。

  下面看一个类库项目的示例和一个利用该项目包含的类的独立项目。

  (1)  在 Chapter09 目录中创建一个“类库”(Class Library)类型的新项目Ch09ClassLib,如图9-10所示。

  (2)把文件Class1.cs重命名为MyExternalClass.cs【在“解决方案资源管理器”(Solution Explorer)窗口中右击该文件,然后选择 “重命名” (Rename), 来重命名该文件名】 。 在弹出的对话框中单击 “是” (Yes)。

  (3) MyExternalClass.cs中的代码己随之自动改变,以反映类名的改变:

public class MyExternalClass 
{ 
} 

  (4) 使用文件名MyInternalClass.cs给项目添加一个新类。

  (5) 修改代码,使类MyInternalClass成为内部类:

internal class MyInternalClass 
{ 
}

  (6) 编译项目【注意这个项目没有入口点,所以不能像通常那样运行它——可以选择“生成 ➪ 生成解决方案”(Build ➪ Build Solution)菜单项来生成它】 。

  (7) 在Chapter09目录中创建一个新的控制台应用程序项目Ch09Ex02。

  (8) 选择“项目 ➪ 添加引用”(Project ➪ Add Reference)菜单项,或者在“解决方案资源管理器”(Solution Explorer)窗口中右击“引用”(References),选择相同的选项。

  (9) 单击 Browse 按钮,导航到 Chapter09Chapter09Ch09ClassLibinDebug,双击Ch09ClassLib.dll。

  (10) 完成了上述操作后,检查引用是否已添加到“解决方案资源管理器”(Solution Explorer)窗口中,如图9-11所示。

  (12) 修改Program.cs中的代码,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Ch09ClassLib;

namespace Ch09Ex02
{
    class Program
    {
        static void Main(string[] args)
        {
            MyExternalClass myObj = new MyExternalClass();
            Console.WriteLine(myObj.ToString());
            Console.ReadKey();
        }
    }
}

  (13) 运行应用程序,其结果如图9-13所示。

  

示例的说明

  类库项目Ch09ClassLib包含两个类MyExternalClass(可公开访问)和MyInternalClass(只能在内部访问)。注意,默认情况下,会隐式将类确定为供内部访问,因为它没有访问修饰符。最好明确指定可访问性,因为这会使代码更容易理解,所以指令增加了internal关键字。

  note: 应用程序使用外部类库中定义的类时,可以把该应用程序称为库的客户应用程序。使用所定义的类的代码一般简称为客户代码。

  为了使用 Ch09ClassLib 中的类,在控制台应用程序中添加了对 Ch09ClassLib.dll 的引用。对于这个示例,该引用是指向类库的输出文件,也可以把这个文件复制到 Ch09Ex02 的本地位置上,以便继续开发类库,而不影响控制台应用程序。为了用新类库项目替换旧版本的程序集,只需用新生成的DLL文件覆盖旧文件即可

  在添加了引用后,就可以使用对象浏览器查看可用的类。因为类MyInternalClass是内部的,所以在对象浏览器窗口中看不到这个类——它不能由外部的项目访问。但是,MyExternalClass是可供访问的,这是我们在控制台应用程序中使用的类。

  利用外面程序集中的类的技术是使用 C#和.NET Framework 编程的关键。实际上,值用.NET Framework中的任何类,也就是在利用外部程序集中的类,因为它们的处理方式是相同的。

原文地址:https://www.cnblogs.com/wodehao0808/p/4955476.html