问题描述:
在。NET高级概念中接口是什么啊?有哪个知道啊?
解析:
和类一样,接口也定义了一系列属性、方法和事件。但与类不同的是,接口并不提供实现。它们由类来实现,并从类中被定义为单独的实体。
接口表示一种约定,实现接口的类必须严格按其定义来实现接口的每个方面。
有了接口,就可以将功能定义为一些紧密相关成员的小组。可以在不危害现有代码的情况下,开发接口的增强型实现,从而使兼容性问题最小化。也可以在任何时候通过开发附加接口和实现来添加新的功能。
虽然接口实现可以进化,但接口本身一旦被发布就不能再更改。对已发布的接口进行更改会破坏现有的代码。若把接口视为约定,很明显约定双方都各有其承担的义务。接口的发布者同意不再更改该接口,接口的实现者则同意严格按设计来实现接口。
创建接口
通过为接口添加代码对其进行定义,这些代码以 Interface 关键字及接口名称开始,以 End Interface 语句结束。例如,下面的代码定义了一个名为 IAsset 的接口。
Interface IAsset
End Interface
添加定义接口所支持的属性、方法和事件的语句。例如,下面的代码定义了一个函数、一个属性和一个事件。
Interface IAsset
Event ComittedChange(ByVal Success As Boolean)
Property Division() As String
Function GetID() As Integer
End Interface
实现接口
如果正在实现的接口不是项目的一部分,则添加一个对包含该接口的程序集的引用。
创建实现接口的新类,并将 Implements 关键字加入该类名后面的行中。例如,要实现 IAsset 接口,可以将实现类命名为 Computer,如以下代码所示。
Class Computer
Implements IAsset
End Class
为实现类的属性、方法和事件添加过程,如以下代码所示,该段代码是建立在上一步的示例基础上的:
的:
Class Computer
Implements IAsset
Public Event ComittedChange(ByVal Success As Boolean) _
Implements IAsset.ComittedChange
Private divisionValue As String
Public Property Division() As String _
Implements IAsset.Division
Get
Return divisionValue
End Get
Set(ByVal value As String)
divisionValue = value
RaiseEvent ComittedChange(True)
End Set
End Property
Private IDValue As Integer
Public Function GetID() As Integer _
Implements IAsset.GetID
Return IDValue
End Function
Public Sub New(ByVal Division As String, ByVal ID As Integer)
Me.divisionValue = Division
Me.IDValue = ID
End Sub
End Class
不是去继承方法..而是继承该接口...继承了该接口等同于要必须实现接口中声明过的方法.所以..把MAG方法继承的时候就出问题了..将class messagx : Basic.Interface1.Mag改成class messagx : Basic.Interface1就没问题了
public 关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制程序集是 .NET Framework 编程的基本组成部分。程序集执行以下功能:
包含公共语言运行库执行的代码。如果可移植可执行 (PE) 文件没有相关联的程序集清单,则将不执行该文件中的 Microsoft 中间语言 (MSIL) 代码。请注意,每个程序集只能有一个入口点(即 DllMain、WinMain 或 Main)。
程序集形成安全边界。程序集就是在其中请求和授予权限的单元。有关应用于程序集的安全边界的更多信息,请参见程序集安全注意事项。
程序集形成类型边界。每一类型的标识均包括该类型所驻留的程序集的名称。在一个程序集范围内加载的 MyType 类型不同于在其他程序集范围内加载的 MyType 类型。
程序集形成引用范围边界。程序集的清单包含用于解析类型和满足资源请求的程序集元数据。它指定在该程序集之外公开的类型和资源。该清单还枚举它所依赖的其他程序集。
程序集形成版本边界。程序集是公共语言运行库中最小的可版本化单元,同一程序集中的所有类型和资源均会被版本化为一个单元。程序集的清单描述您为任何依赖项程序集所指定的版本依赖性。有关版本控制的更多信息,请参见程序集版本控制。
程序集形成部署单元。当一个应用程序启动时,只有该应用程序最初调用的程序集必须存在。其他程序集(例如本地化资源和包含实用工具类的程序集)可以按需检索。这就使应用程序在第一次下载时保持精简。有关部署程序集的更多信息,请参见部署应用程序。
程序集是支持并行执行的单元。有关运行多个程序集版本的更多信息,请参见程序集和并行 (side-by-side) 执行。
程序集可以是静态的或动态的。静态程序集可以包括 .NET Framework 类型(接口和类),以及该程序集的资源(位图、JPEG 文件、资源文件等)。静态程序集存储在磁盘上的可移植可执行 (PE) 文件中。您还可以使用 .NET Framework 来创建动态程序集,动态程序集直接从内存运行并且在执行前不存储到磁盘上。您可以在执行动态程序集后将它们保存在磁盘上。
有几种创建程序集的方法。您可以使用过去用来创建 .dll 或 .exe 文件的开发工具,例如 Visual Studio 2005。您可以使用在 .NET Framework SDK 中提供的工具来创建带有在其他开发环境中创建的模块的程序集。您还可以使用公共语言运行库 API(例如 Reflection.Emit)来创建动态程序集。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)