如何转换类型' System .__ ComObject'的COM对象。接口类型' ESRI.ArcGIS.Carto.FeatureLayer'在vb.net中?

时间:2015-12-11 12:26:50

标签: vb.net interface casting esri

私有函数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

在上面的代码片段中,当尝试将pRaster分配给GetRaster时,代码语句抛出异常"无法转换类型为' System .__ ComObject'的COM对象。接口类型' ESRI.ArcGIS.Carto.FeatureLayer" 。我也尝试过铸造,但那也没有用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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