سؤال

لدينا قيم مخزنة في كتلة التخزين المؤقت لمكتبة ذاكرة التخزين المؤقت. تعدل ملحقات العنصر المخبوق ، وهو قائمة ، القيم. لم نريد أن تتأثر العناصر المخبأة.

وبالتالي ، قمنا أولاً بإعادة قائمة جديدة (Ienumerator of the CacheDitem) لقد تأكد هذا الأمر من إضافة وإزالة العناصر التي لم يكن لها تأثير ضئيل على العنصر المخبوق الأصلي.

ولكن وجدنا ، كل حالات القائمة التي عدناها إلى الملحقات كانت على قيد الحياة! أظهر الرسم البياني العلائقي الكائن وجود علاقة بين هذه القائمة و eventpriselibrary.cacheItem.

لذلك قمنا بتغيير العودة لتكون قائمة استنساخ حديثًا. لهذا استخدمنا linq say (من العنصر في البيانات حدد dataClass (العنصر) الجديد) .tolist () حتى عندما تفعل كما هو مذكور أعلاه ، تُظهر ORG أن هناك علاقة بين هذه القائمة و CacheItem.

لا يمكننا فعل أي شيء لإنشاء نسخة من عنصر القائمة الموجود في ذاكرة التخزين المؤقت لمكتبة المؤسسة ، والتي لا تملك أي علاقة مع ذاكرة التخزين المؤقت؟!

لا يوجد حل صحيح

نصائح أخرى

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

هذه هي الطريقة التي نستنسخ بها العناصر عند سحبها من ذاكرة التخزين المؤقت. الكائنات يجب وضع علامة على التسلسل.

        using (MemoryStream buffer = new MemoryStream())
        {
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(buffer, objectToClone);
            buffer.Position = 0;
            object temp = formatter.Deserialize(buffer);
            return temp;
        }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top