سؤال

لقد حددت:

[RdfSerializable]
public class SomeItem
{
   // Unique identificator of the resource
   [ResourceUri]
   public string ID { get; set; }

   [RdfProperty( true )]
   public string SomeData { get; set; }
}

and in some other class: 

[RdfProperty(true)]
public SomeItem[] MyTestProp
{
   get
   {
      return new SomeItem[] { new SomeItem() { ID="1", SomeData="test1" }, new SomeItem() { ID="2", SomeData = "test2" } };
   }
}

عندما أحاول تسليط الفئة التي تحتوي على هذا "mytestprop" مخصص وأعطاني هذه الرسالة:

مرجع كائن لم يتم تعيين إلى مثيل كائن.

الوصف: حدث استثناء غير معالج أثناء تنفيذ طلب الويب الحالي. يرجى مراجعة تتبع المكدس لمزيد من المعلومات حول الخطأ وأين نشأ في التعليمات البرمجية.

تفاصيل الاستثناء: System.NullReferenceException: لم يتم تعيين مرجع الكائنات على مثيل كائن.

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

المصدر كله:

using System;
using NC3A.SI.Rowlex;

[assembly: Ontology("ROWLEXtest1", "http://www.test.com/MyOntology")]

namespace ROWLEXtest1
{
   [RdfSerializable( HasResourceUri=false )]
   public class Item
   {
      [RdfProperty(true)]
      public string MyProp;
   }

   [RdfSerializable]
   public class AllItems
   {
      [RdfProperty(true)] public string mTitle;

      private int id = new Random().Next(0, 20);

      [ResourceUri]
      public string ResourceUri 
      {
         get { return "This " + id.ToString(); }
      }

      [RdfProperty(false)]
      public Item[] Items;
   }

   class Program
   {
      static void Main(string[] args)
      {
         var item = new AllItems();
         item.mTitle = "Hello World!";
         item.Items = new Item[] { new Item(){ MyProp = "test1" }, new Item(){ MyProp = "test2" } };

         var doc = Rdfizer.Serialize(item);

         System.Console.Out.Write(doc.ToString());
      }
   }
}

استثناء هو:

System.NullReferenceException لم يكن رسالة غير معالج = "مرجع كائن غير مضبوط على مثيل كائن". source = "nc3a.si.rowlex Rowlex.rdfizer.appendproperty (Rdfdocument Doc، MemberInfo MemberInfo، RdfPropertyattribute سمة، عنصر الكائن، Resourceuri DOC، عنصر الكائن، السلسلة [] RangeTypeuris) في NC3A.SI.ROWLEX.RDFIZER.EXECICIESERIONITIONITION (كائنات iEnumerable) في nc3a.si.rowlex.rdfizer.serialize (كائنات iEnumerable، boolean tolererunserializeblebjects) في nc3a.si.rowlex.rdfizer. Serialize (عنصر كائن) في Rowlextest1.program.main (سلسلة [] Args) في C: Rowlextest1 Rowlextest1 Programs.cs: Line 40 في System.Appdomain._nexecuteasSembly (تجميع الجمعية، سلسلة [] Args) في Microsoft.VisualStudio) .hostingprocess.hostproc.runusersassem. BLY () في System.Threading.executioncontext.run (تنفيذ تنفيذ التنفيذ، اتصال ContextCallback، حالة كائن) في System.Threading.Threadhelper.ThreadStart () Innirexception:

هل كانت مفيدة؟

المحلول

ما كنت تبدو موافق ولكن هناك خطأ واحد: يجب أن يأخذ إعلان RDFProperty "خطأ" بالنسبة ل mytestprop حيث mytestprop ليس خاصية نوع البيانات ولكن خاصية الكائنات (تعرض الكائنات وليس حرفيا).

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

  • الفصل وزخرفةها التي تستضيف mytestprop،
  • الرمز حيث يمكنك إنشاء هذا الفصل، و
  • الرمز الذي تستخدمه لتسلسل.
  • هل قمت بتطبيق سمات مستوى التجميع (لعلم الأطباق - تعيين مساحة الاسم)، يرجى الإشارة إلى ذلك أيضا.

ربما يمكنك التفكير في إرسال نموذج الكود الخاص بك إلى [المسؤول في rowlex.net].

تحرير: يمكنني إعادة إنتاج الاستثناء، إنه خطأ في روليس. يمكن الآن تنزيل إصدار 2.0.1 ثابت من رواية موقع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top