Več

Trgovina funkcij dobi napako NullReferenceException

Trgovina funkcij dobi napako NullReferenceException


Poskušam posodobiti vrednost polja glede na izbrani OBJECTID. Toda poiščite napako System.NullReferenceException. Ne vem, kaj je narobe s kodo.

Moja koda je naslednja:

pActiveView = pMxDoc.FocusMap pMxDoc = My.ArcMap.Application.Document pMap = pMxDoc.FocusMap Dim layerNum = GetIndexNumberFromLayerName (pActiveView, "dev_db.DBO.SegmentL pseLaL pAlFaL pAlFaLeLaL pEgLaL pAgLagLeaL pAmLag p. .ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass Dim element As IFeature = pFLayer.GetFeature (1) Dim nameFieldIndex As Integer = pFLayer.FindField ("Seg_ID") feature.Value (nameFieldIndex. 12 " )

Metoda se pokliče v seji urejanja in potrdi, da ima OBJECTID 1 v določeni plasti.

Uporabljam dodatek arcobjects 10.2.2 in vb.net arcmap.


GetFeature () je metoda IFeatureClass in ne IFeatureLayer.

Spremeni to:

Zatemni funkcijo kot IFeature = pFLayer.GetFeature (1)

za to:

Zatemni funkcijo kot IFeature = pFLayer.FeatureClass.GetFeature (1)

Videti je, da ustvarjate predmet razreda lastnosti, vendar ga ne uporabljate.


Vedno priporočam, da preverite ničelne vrednosti, ko pridobivate funkcije iz razredov funkcij, razred funkcij iz slojev funkcij itd. To vam bo preprečilo tovrstne napake in v prihodnosti bo lažje najti napake.

Zatemni pFLayer kot IFeatureLayer pFLayer = pMap.Layer (layerNum) Dim featureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass If featureClass = DbNull.value then return End if If feature AsFa = Vrednost Konec Če Dim funkcija AsFe Vrednost = Funkcija IFFat = Vrednost Konec Dim Dimet AsFae = Vrednost Konec Če je Dim funkcija AsFe Vrednost = Vrednost DimFetFeatureFeat = Vrednost Konec Če je Dim funkcija AsFe Vrednost Konec Če je Dim funkcija AsFe Vrednost Ko je Dim funkcija AsFe Vrednost Konec Če je Dim funkcija AsFe je Vrednost konec DbNull.value nato Return End If Dim nameFieldIndex As Integer = pFLayer.FindField ("Seg_ID") Če nameFieldIndex = -1 potem Return End If feature.Value (nameFieldIndex) = "12/11" feature.Store ()

S to kodo ste prepoznali, da je funkcija nična, in ugotovili, da je bila metoda "GetFeature ()" iz sloja funkcije napačna.