为什么System.Runtime.InteropServices._Exception不遵循.NET中接口的标准命名约定?

时间:2014-05-26 09:05:06

标签: c# interface naming-conventions

通常,接口名称应以I开头 示例IClonableIListSourceIXmlSerializableISupportInitializeNotificationISupportInitializeISerializable,但在这里我找到了一个接口定义:

public interface _Exception { }

为什么接口名称定义为_Exception?为什么不是IException?这有什么特别的原因吗?

4 个答案:

答案 0 :(得分:1)

问作者:]

似乎有人正在遵循另一个命名约定...这个接口名称是否会对你造成任何问题?

修改

如果您指的是this接口,似乎在System.Runtime.InteropServices命名空间中只应用了另一个命名约定

答案 1 :(得分:1)

根据this book,它解释了在编写框架的第一版时遇到的问题;在.Net框架生命周期的开始时,有很多关于指南(命名约定,接口与抽象类等)的讨论。

这就是为什么诸如Interop services之类的“旧命名空间”包含违反您今天可以找到的规则的实现,基本上是那些在实现代码时学习和实现的规则!

.Net框架仍然有旧的遗留代码,由于其在旧应用程序中的影响,无法更改。

我相信this book中还有更多信息,但现在不太确定。

答案 2 :(得分:0)

作者应该能够回答这个问题; - )

我敢打赌,这与这个接口是为了通过COM /非托管代码公开Exception类的成员这一事实有关! COM- / unmanaged world中可能还有其他命名约定。

通常你是对的 - 在.NET世界中,界面名称应该以大写i开头。

答案 3 :(得分:0)

我的猜测是,因为这个界面唯一有用的是包含某种类型的所有方法和属性,以便在COM中使用。

  

此接口用于从非托管代码访问托管类,不应从托管代码调用。