开发控件时常常会遇到一些需要继承的接口但却不需要实现什么方法因为这个接口是空的 接口只包含只有方法属性索引器(有参属性)事件四种成员接口可以提供一组行为和契约当继承一个接口时你需要实现实现接口内的方法 没有方法的接口却也可能有属性索引器事件 这里不讨论我们在开发的时候是否需要使用空接口我只想讨论一下这些空接口是如何起作用的 空接口的作用一般情况下就是标志性也就是实现了这种接口的都是表示他们都是某种类型的class就像Serializable他表示实现了该接口的类型都是可以被持久化和可以做传输的这是一种能力的象征INamingContainer就是其中的典型 同样在控件开发中有的接口的实现方法仅仅从代码上看似乎并不合逻辑 比如常用的IPostBackDataHandler接口 这个接口中有两个方法bool LoadPostData();void RaisePostDataChangedEvent(); LoadPostData()用来判断数据是否发生改变返回值为bool但你一般是看不到有代码去调用RaisePostDataChangedEvent(); 因为这部分的工作是框架来完成的 所以我们猜想在继承类空的接口后虽然你所能看到代码上并没有什么改变但相对于框架来说这个继承空接口的类被赋予了某些特性 在运行和使用的时候框架会帮我们做很多我们看不到的事情 |