zoukankan      html  css  js  c++  java
  • 接口真的不能被实例化?

    在做导出Excel时,有一行代码
    Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();

    new了一个接口,编译器也报错,而且运行正确。

    此接口定义:

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

    谷歌之:

    NET提供Interop 程序集,它用作托管和非托管代码之间的桥梁,将 COM 对象成员映射为等价的 .NET 托管成员。

    在.net里面非托管转换成托管的接口用CoClass标记接口转换成类,所以excel.application 实例化是可以的。

    还有一种替代此行代码的方法,
    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();

    类型“Microsoft.Office.Interop.Excel.ApplicationClass”未定义构造函数    
    无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口。

    解决办法是将引用的DLL:Microsoft.Office.Interop.Excel;的嵌入互操作类型改为false,就可以了。

  • 相关阅读:
    cg数据类型
    线程和流的历史遗留
    流的总结及小问题

    集合练习
    集合属性的整理
    集合
    整理
    面向对象中知识的薄弱点
    自己的小问题和数组常用的方法
  • 原文地址:https://www.cnblogs.com/maomiyouai/p/3636560.html
Copyright © 2011-2022 走看看