接口无法实例化,但这是一个例外

JAX*_*JAX 13 c# com interface office-interop

看到我实际上必须实例化一个接口以在C#中使用Word Interoop后,我感到非常惊讶.

Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
Run Code Online (Sandbox Code Playgroud)

Microsoft.Office.Interop.Word.Application按什么它的XML文档说是一个接口:

在此输入图像描述

怎么可能,视觉工作室把它与别的东西混淆了?或者是什么允许实例化这个接口?

Jon*_*eet 14

这是因为它是一个COM接口.COM接口 - 只有 COM接口 - 可以直接实例化.运行时将在幕后创建真实类型的实例.我个人觉得它有点难看(我在C#规范中找不到任何引用)但是我们去了.

你实际上可以假装这个,这样C#编译器就会认为你的接口是一个COM类型而没有正确地参与COM ......详情请参阅我的相关问题.

  • 从我的角度来看,你是一个真正的C#国王 (3认同)