أكثر

ميزة متجر الحصول على خطأ NullReferenceException

ميزة متجر الحصول على خطأ NullReferenceException


أحاول تحديث قيمة حقل وفقًا لـ OBJECTID المحدد. لكن احصل على خطأ System.NullReferenceException. لا أعرف ما هو الخطأ في الكود.

قانون بلدي على النحو التالي:

pActiveView = pMxDoc.FocusMap pMxDoc = My.ArcMap.Application.Document pMap = pMxDoc. .ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass ميزة Dim كـ IFeature = pFLayer.GetFeature (1) Dim nameFieldIndex As Integer = pFLayer.FindField ("Seg_ID") feature.Value (nameFieldIndex) = "12/11" feature.Store ( )

يتم استدعاء الطريقة في جلسة التحرير ، والتأكيد يحتوي على OBJECTID 1 في الطبقة المحددة.

أنا أستخدم الوظيفة الإضافية Arcobjects 10.2.2 و vb.net arcmap.


GetFeature () هي طريقة IFeatureClass ، وليس IFeatureLayer.

غير هذا:

ميزة خافتة مثل IFeature = pFLayer.GetFeature (1)

الى هذا:

ميزة خافتة مثل IFeature = pFLayer.FeatureClass.GetFeature (1)

يبدو أنك تنشئ كائنًا مميزًا ولكن لا تستخدمه.


أوصي دائمًا بالتحقق من القيم الفارغة عندما تحصل على ميزات من فئات المعالم ، وفئة المعالم من طبقات المعالم ، وما إلى ذلك. وهذا سيمنعك من هذا النوع من الأخطاء ، وفي المستقبل سيكون من الأسهل العثور على الأخطاء.

Dim pFLayer As IFeatureLayer pFLayer = pMap.Layer (layerNum) خافت featureClass مثل ESRI.ArcGIS.Geodatabase.IFeatureClass = pFLayer.FeatureClass If featureClass = DbNull.value ثم Return End If Dim feature As IFeature = featureClass.GetFeature (1) If feature = DbNull.value ثم إرجاع End If Dim nameFieldIndex As Integer = pFLayer.FindField ("Seg_ID") إذا كان nameFieldIndex = -1 ثم إرجاع End If feature.Value (nameFieldIndex) = "12/11" feature.Store ()

باستخدام هذا الرمز ، أدركت أن الميزة كانت خالية ، وأدركت أن الطريقة "GetFeature ()" من طبقة المعالم كانت خاطئة.