gpt4 book ai didi

c# - 为什么可以创建 COM 接口(interface)的新实例?

转载 作者:太空狗 更新时间:2023-10-29 17:55:36 26 4
gpt4 key购买 nike

我对 COM 和组件类没有太多了解,所以我不太明白为什么我可以对接口(interface)使用 new 运算符。从与语言/框架无关的角度来看,令人困惑的是为什么它可以正确编译和运行:

using Microsoft.Office.Interop.Excel;

public class ExcelProgram
{
static void Main(string[] args)
{
Application excel = new Application();
}
}

在 Visual Studio 2010 中检查 Application 显示:

using System.Runtime.InteropServices;

namespace Microsoft.Office.Interop.Excel
{
// Summary:
// Represents the entire Microsoft Excel application.
[Guid("000208D5-0000-0000-C000-000000000046")]
[CoClass(typeof(ApplicationClass))]
public interface Application : _Application, AppEvents_Event
{
}
}

幕后发生了什么?

最佳答案

我相信这只适用于 COM 接口(interface)。 Marc Gravell 有一个解释 here .

简短的回答是 COM 接口(interface)可以与“默认”实现类配对,这样当您“实例化”接口(interface)时,您实际上是在创建该默认实现类的实例。对于示例中的 Application 接口(interface),它似乎是 ApplicationClass

关于c# - 为什么可以创建 COM 接口(interface)的新实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4951835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com