У меня нет очень много предпосылок относительно COM или coclasses, поэтому я не совсем понимаю, почему я могу использовать оператор new
с интерфейсом. От языка/рамочный агностик взгляд, это заблуждение, почему это компилируется и работает правильно:Почему возможно создать новый экземпляр COM-интерфейса?
using Microsoft.Office.Interop.Excel;
public class ExcelProgram
{
static void Main(string[] args)
{
Application excel = new Application();
}
}
Проверка Application
в Visual Studio 2010 показывает мне:
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
{
}
}
Что происходит за кулисами?
Спасибо. У этой ссылки была ссылка на ссылку http://stackoverflow.com/questions/1093536/how-does-the-c-compiler-detect-com-types. Думаю, я искал неправильные ключевые слова - похоже, мой вопрос по сути является дубликатом. – ide