接口

C#接口有三种用途:

  1. 提供方法、属性、事件的抽象。这是接口最常见的用途。在面向对象的设计中,接口是软件架构可扩展性的重要保证因素,与抽象类配合使用,使得框架结构具有“被注入”的特性,从而提高系统的扩展性
  2. 用作泛型约束。在这种情况下,接口可以仅仅是一个类型,其中可以不带任何方法、属性或事件的定义。请看:
     
    1. public interface IChargeable   
    2. {   
    3. }   
    4.   
    5. public class MyCharge : IChargeable
    6.  {
    7.  }   
    8.   
    9. public class ChargeFacility<TChargeable>  where TChargeable : IChargeable 
    10. }  

    在这个例子中,IChargeable仅仅是为了提供一个泛型约束,确保ChargeFacility中的泛型类型是实现了IChargeable接口的(或者是IChargeable接口本身)。在这种情况下,IChargeable完全可以不需要提供任何方法、属性或事件的定义。

  3. 接口用作开发约束。由于反射的引入,在某些应用场合,程序本身很可能不是通过判断某个类是否实现了某个接口,再去调用给定的函数;程序完全可以使用反射来找到它所需要调用的函数然后使用MethodInfo.Invoke方法去调用这个函数。那么这样一来,开发人员有可能忘记在类中实现这些特定的方法,而导致程序出现问题。于是可以添加一个接口,在其中定义好必须实现的函数声明,然后通过Best Practice的方式要求开发人员在这些类上实现这个接口,那么开发人员也就不得不去填写函数实现体了。
posted @   十二月雨  阅读(186)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示