2010-07-01 15 views
5

उपयोग कर बनाई गई वहाँ IEnumerator<T> जब मैं yield return s का उपयोग बनाया जाता है कि (BinaryFormatter उपयोग करते हुए) को क्रमानुसार करने के लिए एक रास्ता है? स्वत: उत्पन्न वर्ग Serializable चिह्नित नहीं है।serializing IEnumerator <T> उपज वापसी

उत्तर

3

गणित जेनरेट किए गए कंपाइलर में [Serializable] विशेषता लागू नहीं होती है, इसलिए, बॉक्स के बाहर, आप ऐसा नहीं कर सकते हैं।

आपको खुद से पूछना चाहिए, "मैं यहां उपज का उपयोग क्यों कर रहा हूं, और इस वस्तु को निराशाजनक होने के बाद इसका क्या अर्थ है?"

यदि इसकी सुविधा है, तो आप इसे एक प्रकार को भरने के लिए उपयोग कर सकते हैं जिसे क्रमबद्ध किया जा सकता है। यदि आप आलसी तरीके से कुछ भारी उठाने के लिए इसका उपयोग करते हैं, तो हो सकता है कि आप उस भारी भारोत्तोलन को करने के लिए आवश्यक जानकारी को क्रमबद्ध/deserialize करने के लिए अपने डिजाइन को बदलने पर विचार करना चाहें। सरल समाधान के लिए

+2

यह वास्तव में बिल्कुल सही नहीं है। मुझे लगता था कि आप या तो नहीं कर सकते थे, लेकिन वास्तव में आप सामान्य जेनेरिक कोड को बनाए रखते हुए सीरियलाइजेशन के लिए सरोगेट्स के लिए सरोगेट्स का उपयोग कर सकते हैं। उदाहरण कोड देखें: http://dotnet.agilekiwi.com/blog/2007/05/implementing-workflow-with-persistent.html –

0

बस गणनाकर्ता को दोहराएं और प्रत्येक उदाहरण लौटाए क्रमबद्ध करें।

3

IEnumerable<T> लागू करने के लिए आप किस कक्षा का उपयोग कर रहे हैं? List<T> ठीक से क्रमबद्ध करना चाहिए।

इसे क्रमबद्ध करने से पहले अपने संग्रह पर ToList() पर कॉल करने का प्रयास करें।

+0

+1। – Tyrsius

संबंधित मुद्दे