Suite

Le magasin de fonctionnalités obtient une erreur NullReferenceException


J'essaie de mettre à jour une valeur de champ en fonction de l'OBJECTID sélectionné. Mais obtenez l'erreur System.NullReferenceException. Je ne sais pas ce qui ne va pas avec le code.

Mon code est le suivant :

pActiveView = pMxDoc.FocusMap pMxDoc = My.ArcMap.Application.Document pMap = pMxDoc.FocusMap Dim layerNum = GetIndexNumberFromLayerName(pActiveView, "dev_db.DBO.Segment") Dim pFLayer As IFeatureLayer feature pM .ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass Dim feature As IFeature = pFLayer.GetFeature(1) Dim nameFieldIndex As Integer = pFLayer.FindField("Seg_ID") feature.Value(nameFieldIndex) = "12/11" feature.Store( )

La méthode est appelée dans une session d'édition et la confirmation a l'OBJECTID 1 dans la couche spécifiée.

J'utilise arcobjects 10.2.2 et le complément arcmap vb.net.


GetFeature() est une méthode d'IFeatureClass, pas d'IFeatureLayer.

Change ça:

Fonction dim comme IFeature = pFLayer.GetFeature(1)

pour ça:

Fonction dim comme IFeature = pFLayer.FeatureClass.GetFeature(1)

On dirait que vous créez un objet de classe d'entités mais que vous ne l'utilisez pas.


Je recommande toujours de vérifier les valeurs nulles lorsque vous obtenez des entités à partir de classes d'entités, des classes d'entités à partir de couches d'entités, etc. Cela vous évitera ce type d'erreurs et, à l'avenir, il sera plus facile de trouver des bogues.

Dim pFLayer As IFeatureLayer pFLayer = pMap.Layer(layerNum) Dim featureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass If featureClass = DbNull.value then Return End If Dim feature As IFeature = featureClass.GetFeature(1) If feature = DbNull.value then Return End If Dim nameFieldIndex As Integer = pFLayer.FindField("Seg_ID") If nameFieldIndex = -1 then Return End If feature.Value(nameFieldIndex) = "12/11" feature.Store()

Avec ce code, vous aviez reconnu que la fonctionnalité était nulle et vous vous êtes rendu compte que la méthode "GetFeature()" de la couche de fonctionnalités était erronée.


Voir la vidéo: How to Fix Null Reference Exception Error (Octobre 2021).