空接口和奇怪的接口方法
开发控件时,常常会遇到一些需要继承的接口,但却不需要实现什么方法,因为这个接口是空的。
接口只包含只有方法,属性,索引器(有参属性),事件四种成员。接口可以提供一组行为和契约,当继承一个接口时,你需要实现实现接口内的方法。
没有方法的接口,却也可能有属性,索引器,事件。
这里不讨论我们在开发的时候是否需要使用空接口。我只想讨论一下,这些空接口是如何起作用的。
空接口的作用一般情况下就是标志性,也就是实现了这种接口的都是表示他们都是某种类型的class,就像Serializable,他表示实现了该接口的类型都是可以被持久化和可以做传输的。这是一种能力的象征。INamingContainer就是其中的典型。
同样在控件开发中,有的接口的实现方法仅仅从代码上看似乎并不合逻辑。
比如常用的:IPostBackDataHandler接口
这个接口中有两个方法bool LoadPostData();void RaisePostDataChangedEvent();
LoadPostData()用来判断数据是否发生改变,返回值为bool。但你一般是看不到有代码去调用RaisePostDataChangedEvent();
因为这部分的工作是框架来完成的。
所以我们猜想在继承类空的接口后,虽然你所能看到代码上并没有什么改变,但相对于框架来说这个继承空接口的类被赋予了某些特性。
在运行和使用的时候,框架会帮我们做很多我们看不到的事情。
分类:
.net基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库