当前位置:  开发笔记 > 编程语言 > 正文

为什么我们使用无成员接口?

如何解决《为什么我们使用无成员接口?》经验,为你挑选了3个好方法。

编写没有成员的接口有什么意义?

INamingContainer是.NET Framework中的一个示例.它在MSDN中描述为:

标识在Page对象的控件层次结构中创建新ID命名空间的容器控件.这只是一个标记界面.

它只用于这种块:

if (myControl is INamingContainer)
{
    // do something
}

还是有其他优点吗?

编辑:它被称为标记界面模式(感谢Preet)



1> Dmitri Neste..:

无成员接口用于在C#中提供类似mixin的功能.所以给出了A类:

class A : B { ... }

您可以通过定义接口IStuff为其提供额外的功能(a-la multiple inheritance):

interface IStuff {}

然后在A中'实施'它:

class A : B, IStuff { ... }

然后添加额外的功能

class Methods {
  public static void Something(this IStuff stuff) {
    // some functionality here
  }
}



2> Jonathan Par..:

这是为了确保您可以将对象集合视为相同类型,然后对该类型执行某些操作(您知道它必须从对象继承).

把它想象成属性.它是类型元数据.

您还可能希望对已知类型(例如System.Web.UI.Control)执行操作,但仅在类型继承自某个接口(例如INamingContainer)时才执行该操作.

foreach(var ctrl in this.Controls)
{
    if (ctrl is INamingContainer)
    {
        // Do something on the control
    }
}



3> Preet Sangha..:

它是一个标记界面.它可以用来装饰类型,这样你就可以在运行时找出它的类型是正确的而不使用反射.我们使用它来确保被调用者中的泛型类型是正确的.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有