【问题标题】:How to cast COM object of type 'System.__ComObject' to interface type 'ESRI.ArcGIS.Carto.FeatureLayer' in vb.net?如何在 vb.net 中将类型为“System.__ComObject”的 COM 对象转换为接口类型“ESRI.ArcGIS.Carto.FeatureLayer”?
【发布时间】:2016-03-17 08:50:45
【问题描述】:

私有函数GetRaster(ByRef sLayerLocation As String) As ESRI.ArcGIS.Carto.FeatureLayer

    Dim fso As New Scripting.FileSystemObject
    Dim sFolder As String
    Dim sFile As String
    Dim pWsFact As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory
    Dim pRasterWs As ESRI.ArcGIS.Geodatabase.IRasterWorkspace2

    Dim pRasterDataset As ESRI.ArcGIS.Geodatabase.IRasterDataset
    Dim pRaster As ESRI.ArcGIS.Geodatabase.IRaster
    Dim pRasterLayer As ESRI.ArcGIS.Carto.IRasterLayer




    sFolder = fso.GetParentFolderName(sLayerLocation)
    sFile = fso.GetFileName(sLayerLocation)
    Try
        'Open the workspace
        pWsFact = New ESRI.ArcGIS.DataSourcesRaster.RasterWorkspaceFactory
        pRasterWs = pWsFact.OpenFromFile(sFolder, 0)

        'Open the raster dataset
        pRasterDataset = pRasterWs.OpenRasterDataset(sFile)
        pRasterLayer = New ESRI.ArcGIS.Carto.RasterLayer

        pRasterLayer.CreateFromDataset(pRasterDataset)
        pRaster = pRasterLayer.Raster
        **GetRaster = pRaster;** 

    Catch ex As Exception

    End Try

在上面的代码 sn-p 中,尝试将 pRaster 分配给 GetRaster 时,代码语句抛出异常 "Unable to cast COM object of type 'System.__ComObject' to interface type 'ESRI.ArcGIS.Carto.FeatureLayer" 。我也尝试过铸造,但这也不起作用。任何帮助将不胜感激。

【问题讨论】:

    标签: vb.net interface casting esri


    【解决方案1】:

    栅格图层不实现 IFeatureLayer 接口。除了我认为的栅格目录图层。 您的函数应返回 IRasterLayer 或 IRaster。

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 2014-03-20
      • 2018-06-05
      相关资源
      最近更新 更多