使用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。只是不记得我是否可以这样做。
答案 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"