ArcGIS Engine 开发 (二)C#new一个接口成功的原因

问题代码:

MapDocument是一个接口,在C#中接口是不可以被实例化的。

 //将数据载入pMapDocument并与Map控件关联
                IMapDocument pMapDocument = new MapDocument();
                pMapDocument.Open(pFilePath, "");
                //获取Map中激活的地图文档
                axMapControl1.Map = pMapDocument.ActiveView.FocusMap;
                axMapControl1.ActiveView.Refresh();

原因:

其实源码里在定义接口时同时定义了它的实现类coClass和唯一标识Guid,这个接口被这两个特性修饰的。

coClass这个特性指示编译器在编译MapDocument的时候,使用MapDocumentClass来实现。。

查看MapDocument生成的声明,它可以能有一个与MapDocumentClass关联的Guid,可以用于创建一个MapDocumentClass对象实例。

// 摘要: 
    //     The MapDocument coclass is used to read and write map document files.
    [CoClass(typeof(MapDocumentClass))]
    [Guid("5366451C-A001-4179-B8CB-E8F014628A44")]
    public interface MapDocument : IMapDocument
    {
    }

猜你喜欢

转载自blog.csdn.net/xunminwei0021/article/details/84448144