对象类型的文字描述

时间:2014-01-22 00:14:04

标签: vb.net types interface arcgis

使用ArcObjects的VB2010。我有一个问题,回忆如何做到这一点。我可以测试一个对象类型,然后做一些适当的类型。所有其他我想显示一个不受支持的类型的消息。所以我有:

Dim pRasRenderer As IRasterRenderer
pRasRenderer = pRasterLayer.Renderer
If TypeOf pRasRenderer Is IRasterClassifyColorRampRenderer Then
  'process the layer
Else
   Debug.Print "Type not supported: " & pRasRenderer.ToString
End If

如果不支持,则应该读取print语句

       "Type not supported: IRasterStretchColorRampRenderer"

或我不处理的任何其他类型。但我得到的只是

       "Type not supported: System.__ComObject"

我尝试了GetType()和TypeName。只是不记得我是否可以这样做。

1 个答案:

答案 0 :(得分:0)

使用COM,类型不是IRasterStretchColorRampRenderer,它是某种COM类型(很可能)实现了很多截然不同的接口。鉴于您使用的是.NET,只要您尝试直接访问对象的“类型”,就会得到__ComObject

例如,实现IRasterStretchColorRampRenderer的对象的实际“类型”很可能是COM CoClass的本机实现。因此,您永远不会从.NET代码中获得“托管”类型名称。

不幸的是,这意味着您最好的解决方案是可能会报告传入的类型不支持,而尝试报告传递给方法的实际类型。这可能是这样的:

Debug.Print "Type not supported: Current layer is not using a Classify Color Ramp Renderer"