|
阅读:1142回复:1
vb.net中使用接口问题
<TABLE width="100%">
<TR> <TD class=subtitle colSpan=6>内容摘要</TD></TR> <TR> <TD class=txt colSpan=6>以前有一段在8.3下面写的代码,是用于获取某字段独立值的,如下: Public Function lstUniqueValue(ByVal pFeatClass As IFeatureClass, ByVal pFieldName As String) As Collection Dim i As Long Dim lCount As Long Dim pValue As Object Dim pDataStat As ESRI.ArcGIS.Geodatabase.IDataStatistics Dim pFeatCursor As IFeatureCursor Dim pEnumVar As IEnumVariantSimple Try lstUniqueValue = New Collection pFeatCursor = pFeatClass.Search(Nothing, False) pDataStat = New ESRI.ArcGIS.Geodatabase.DataStatistics pDataStat.Field = pFieldName pDataStat.Cursor = pFeatCursor pEnumVar = pDataStat.UniqueValues lCount = pDataStat.UniqueValueCount If lCount <> 0 Then For i = 0 To lCount - 1 pValue = pEnumVar.Next() lstUniqueValue.Add(pValue) Next End If Catch ex As Exception lstUniqueValue = Nothing MsgBox("错误描述:" ; ex.Message) End Try pDataStat = Nothing pFeatCursor = Nothing pEnumVar = Nothing End Function 现在在vb.net下似乎pDataStat.UniqueValues的UniqueValues方法与net框架的同名方法冲突,我加了定义限定仍然不行,提示错误是“类型无法转换”,请问该如何解决这个问题 其实也可以用很笨的循环判断的方法,但这个方法效率很高,我们想将这个程序调通 谢谢。</TD></TR> <TR> <TD class=subtitle colSpan=6>过程描述</TD></TR> <TR> <TD class=txt colSpan=6>只要将Dim pEnumVar As IEnumVariantSimple 改为Dim pEnumVar As System.Collections.IEnumerator即可。 如下: Dim pEnumVar As System.Collections.IEnumerator Try lstUniqueValue = New Collection pFeatCursor = pFeatClass.Search(Nothing, False) pDataStat = New ESRI.ArcGIS.Geodatabase.DataStatistics pDataStat.Field = pFieldName pDataStat.Cursor = pFeatCursor pEnumVar = pDataStat.UniqueValues lCount = pDataStat.UniqueValueCount If lCount <> 0 Then For i = 0 To lCount - 1 pValue = pEnumVar.MoveNext() lstUniqueValue.Add(pValue) Next End If Catch ex As Exception lstUniqueValue = Nothing MsgBox("错误描述:" ; ex.Message) End Try</TD></TR></TABLE> |
|
|
|
1楼#
发布于:2005-01-14 08:35
呵呵,不错,有时间我试试!
|
|