首页 > 其他 > 详细

接口真的不能被实例化?

时间:2014-04-02 12:22:21      阅读:514      评论:0      收藏:0      [点我收藏+]

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

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

 

此接口定义:

1
2
3
4
5
6
7
8
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,就可以了。

接口真的不能被实例化?,布布扣,bubuko.com

接口真的不能被实例化?

原文:http://www.cnblogs.com/maomiyouai/p/3636560.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!