C# 在C中创建接口实例#
我在C#中使用MS Excel interop,我不明白这一行代码是如何工作的:C# 在C中创建接口实例#,c#,oop,C#,Oop,我在C#中使用MS Excel interop,我不明白这一行代码是如何工作的: var excel = new Microsoft.Office.Interop.Excel.Application(); 其中,Microsoft.Office.Interop.Excel.Application是一个定义为: [Guid("000208D5-0000-0000-C000-000000000046")] [CoClass(typeof(ApplicationClass))] public int
var excel = new Microsoft.Office.Interop.Excel.Application();
其中,Microsoft.Office.Interop.Excel.Application是一个定义为:
[Guid("000208D5-0000-0000-C000-000000000046")]
[CoClass(typeof(ApplicationClass))]
public interface Application : _Application, AppEvents_Event
{
}
我认为当接口被CoClass属性修饰时会发生一些神奇的事情,但是我们怎么可能用一个新的关键字创建一个接口的实例呢?它不应该生成编译时错误吗?实际上是您提到的创建了
ApplicationClass
类实例的代码,这就是CoClass
属性所做的
有关详细信息,请参阅此答案:Ayend。ApplicationClass是实现应用程序接口。换句话说,接口是类的方法声明。您的代码行创建类ApplicationClass的实例(因为接口具有带有构造函数的类的属性),查询接口应用程序的此实例并将其放入变量excel 关于第二个问题:不,您不能使用“new”关键字创建接口。因为,任何接口都只有方法声明,而没有实现。您可以尝试创建自己的类和接口:
interface MyIntf {
void method1(string s1);
}
public class MyIntfImplementation : MyIntf {
void method1(string s1) {
// do it something
}
}
在此之后,您可以使用:
MyIntf q = new MyIntfImplementation();
q.method1();
+1个有趣的博客,但我可能不会急于使用它。它感觉像是应用于接口的适配器模式(如果有意义的话!)。