背景:
大家都知道,平时做asp.net的程序是需要在.ashx文件中使用Session,而对于需要读写会话状态的一般处理程序,必须实现一个特定的标记接口 IRequiresSessionState,这个接口定义在命名空间 System.Web.SessionState 中,其中没有定义任何成员,所以,实现这个接口并不需要在类中增加任何成员。与此类似,同样定义在这个命名空间下的接口 IReadOnlySessionState 也没有定义任何成员,用来标志只需要读取会话状态的处理程序。
这种没有任何成员的接口,通常被称为标记接口,由于在 .NET 中类只有单继承,但是可以实现多个接口,所以在 .NET 开发早期的时候出现过一些通过标记接口来表示类的某些特征的开发技巧。但是 .NET 平台上提供了一个更加直接和简单的技术来解决这种问题,这就是标签 (Attribute ),所以,这种用法昙花一现,现在很少出现了。在 ASP.NET 开发中,这是仅有的一例。