【问题标题】:Literal description of object type对象类型的文字描述
【发布时间】:2014-02-11 20:25:33
【问题描述】:

VB2010 与 ArcObjects。我在回忆如何执行此操作时遇到问题。我可以测试一个对象类型,然后如果它是正确的类型就做一些事情。所有其他我想显示一条不支持的类型的消息。所以我有:

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

如果不支持打印语句应该是

       "Type not supported: IRasterStretchColorRampRenderer"

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

       "Type not supported: System.__ComObject"

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

【问题讨论】:

    标签: vb.net types interface arcgis


    【解决方案1】:

    对于 COM,类型不是 IRasterStretchColorRampRenderer,它是某种 COM 类型,(很可能)实现了许多截然不同的接口。鉴于您使用 .NET 工作,任何时候您尝试直接访问对象的“类型”时都会收到 __ComObject。

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

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

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

    【讨论】:

    猜你喜欢
    • 2021-06-26
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    相关资源
    最近更新 更多