您没有创建
CustomXMLSchemaCollection
接口,但是
CustomXMLSchemaCollectionClass
共类。
的定义
自定义XmlSchemaCollection
接口是:
[Guid("000CDB02-0000-0000-C000-000000000046")]
[CoClass(typeof(CustomXMLSchemaCollectionClass))]
public interface CustomXMLSchemaCollection : _CustomXMLSchemaCollection
{
}
这意味着实现接口的指定coclass是
自定义XmlSchemaCollectionClass
. 我的猜测是,当C编译器看到
自定义XmlSchemaCollection
它将其转换为创建
自定义XmlSchemaCollectionClass
基于接口提供的属性。
写下这个简单的例子后:
namespace ConsoleApplication2
{
using System;
using Office = Microsoft.Office.Core;
class Program
{
static void Main(string[] args)
{
Office.CustomXMLSchemaCollection test = new Office.CustomXMLSchemaCollection();
}
}
}
我只是跑
ildasm
并获得以下msil:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 8 (0x8)
.maxstack 1
.locals init ([0] class [Interop.Microsoft.Office.Core]Microsoft.Office.Core.CustomXMLSchemaCollection test)
IL_0000: nop
IL_0001: newobj instance void [Interop.Microsoft.Office.Core]Microsoft.Office.Core.CustomXMLSchemaCollectionClass::.ctor()
IL_0006: stloc.0
IL_0007: ret
} // end of method Program::Main
如您所见,构造的类是
自定义XmlSchemaCollectionClass
以证明我的初步假设。