सी # सीरियललाइज़ेशन & उदाहरण के साथ विवरण

Anonim

जब भी वस्तुओं से संबंधित डेटा को एक अनुप्रयोग से दूसरे में भेजा जाना होता है, तो Serialization और deserialization की अवधारणा का उपयोग किया जाता है। Serialization का उपयोग एक फाइल में एप्लिकेशन डेटा को निर्यात करने के लिए किया जाता है। गंतव्य एप्लिकेशन तब आगे के उपयोग के लिए एप्लिकेशन से डेटा निकालने के लिए डीसेरिएलाइज़ेशन का उपयोग करता है।

सीरियलाइज़ेशन एक अवधारणा है जिसमें सी # क्लास ऑब्जेक्ट्स को फाइलों में लिखा या सीरियल किया जाता है। मान लें कि आपके पास एक सी # क्लास है जिसे ट्यूटोरियल कहा जाता है। और वर्ग में आईडी और ट्यूटोरियल नाम के 2 गुण हैं।

Serializing का उपयोग सीधे ट्यूटोरियल क्लास के डेटा गुणों को एक फ़ाइल में लिखने के लिए किया जा सकता है। फ़ाइल से डेटा को पढ़ने और ट्यूटोरियल ऑब्जेक्ट को फिर से बनाने के लिए डिसरराइजेशन का उपयोग किया जाता है।

आइए एक उदाहरण देखें कि हम इसे कैसे प्राप्त कर सकते हैं।

हमारे उदाहरण में, हम कोड में नीचे दिए गए उच्च-स्तरीय चरणों का प्रदर्शन करने जा रहे हैं

  1. ट्यूटोरियल नामक एक क्लास बनाएं जिसमें 2 प्रॉपर्टीज हों, जैसे आईडी और नाम
  2. फिर हम क्लास से एक ऑब्जेक्ट बनाएंगे और आईडी प्रॉपर्टी को "1" का मान और नाम प्रॉपर्टी को ".Net" का मान देंगे।
  3. हम इसके बाद ऊपर दिए गए ऑब्जेक्ट को Example.txt नामक फ़ाइल में क्रमबद्ध करने के लिए क्रमांकन का उपयोग करेंगे
  4. अंत में, हम फ़ाइल से ऑब्जेक्ट को डीरिएरलाइज़ करने और कंसोल में मान प्रदर्शित करने के लिए डिसेरिएलाइज़ेशन का उपयोग करेंगे।

कंसोल एप्लिकेशन के प्रोग्राम फ़ाइल में नीचे कोड दर्ज करें।

चरण 1) पहला चरण उस वर्ग को जोड़ना है जिसका उपयोग क्रमांकन के लिए किया जाएगा

कोड स्पष्टीकरण: -

  1. जिस वर्ग को क्रमबद्ध करने की आवश्यकता है, उसे [Serializable] विशेषता का होना आवश्यक है। यह C # में एक कीवर्ड है। यह कीवर्ड तब ट्यूटोरियल क्लास से जुड़ा हुआ है। यदि आप इस विशेषता का उल्लेख नहीं करते हैं, तो कक्षा में अनुक्रमित करने का प्रयास करते समय आपको एक त्रुटि मिलेगी।
  2. इसके बाद वर्ग की परिभाषा है जिसे क्रमबद्ध किया जाएगा। यहां हम "ट्यूटोरियल" नामक एक वर्ग को परिभाषित कर रहे हैं और 2 गुण प्रदान कर रहे हैं, एक "आईडी" है और दूसरा "नाम" है।

स्टेप 2) इस स्टेप में, पहले हम ट्यूटोरियल क्लास की ऑब्जेक्ट बनाएंगे और उसे File.txt नाम से सीरियल करेंगे

कोड स्पष्टीकरण: -

  1. सबसे पहले, हम ट्यूटोरियल क्लास का एक ऑब्जेक्ट बनाते हैं। फिर हम नाम संपत्ति के लिए "1" आईडी और ".net" का मान निर्दिष्ट करते हैं।
  2. फिर हम फॉर्मेटर क्लास का उपयोग करते हैं जो ऑब्जेक्ट को बाइनरी प्रारूप में क्रमबद्ध या परिवर्तित करने के लिए उपयोग किया जाता है। फ़ाइल को क्रमांकन में डेटा बाइनरी प्रारूप में किया जाता है। अगला, हम एक फ़ाइल स्ट्रीम ऑब्जेक्ट बनाते हैं। फ़ाइल स्ट्रीम ऑब्जेक्ट का उपयोग फ़ाइल खोलने के लिए किया जाता है। उदाहरण लेखन के लिए। FileMode.Create और FileMode.Write कीवर्ड का उपयोग विशेष रूप से यह उल्लेख करने के लिए किया जाता है कि फ़ाइल लेखन उद्देश्यों के लिए खोली जानी चाहिए।
  3. अंत में, हम बाइनरी डेटा को फ़ाइल में स्थानांतरित करने के लिए Serialize विधि का उपयोग करते हैं। हम तब स्ट्रीम को बंद कर देते हैं, क्योंकि लेखन ऑपरेशन पूरा हो गया है।

चरण 3) अंत में यह सुनिश्चित करने के लिए कि डेटा फ़ाइल में मौजूद है, हम फ़ाइल से ऑब्जेक्ट को डीरिएरलाइज़ करने के लिए डिसेरिएलाइज़ेशन का उपयोग करते हैं।

using System;using System.IO;using System.Linq;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Text;using System.Threading.Tasks;namespace DemoApplication{[Serializable]class Tutorial{public int ID;public String Name;static void Main(string[] args){Tutorial obj = new Tutorial();obj.ID = 1;obj.Name = ".Net";IFormatter formatter = new BinaryFormatter();Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);formatter.Serialize(stream, obj);stream.Close();stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);Tutorial objnew = (Tutorial)formatter.Deserialize(stream);Console.WriteLine(objnew.ID);Console.WriteLine(objnew.Name);Console.ReadKey();}}}

कोड स्पष्टीकरण: -

  1. हम फ़ाइल को खोलने के लिए ऑब्जेक्ट "स्ट्रीम" बनाते हैं। उदाहरण केवल पढ़ने के लिए।
  2. फिर हम फॉर्मेटर क्लास का उपयोग करते हैं, जिसका उपयोग ऑब्जेक्ट को डीरिएरलाइज़ करने के लिए किया जाता है, जिसे Example.txt फ़ाइल में संग्रहीत किया जाता है। लौटाई गई वस्तु ऑब्जेक्ट objnew पर सेट है।
  3. अंत में, हम "ID" और "नाम" गुणों का उपयोग करके कंसोल के ऑब्जेक्ट "objnew" के गुणों को प्रदर्शित करते हैं।

जब उपरोक्त कोड सेट हो जाता है, और प्रोजेक्ट विजुअल स्टूडियो का उपयोग करके चलाया जाता है, तो आपको नीचे आउटपुट मिलेगा।

आउटपुट: -

आप उपरोक्त आउटपुट से देख सकते हैं कि फ़ाइल से मान ठीक से डिरेल किए गए थे और कंसोल में प्रदर्शित किए गए थे।

सारांश

सीरियलाइजेशन का उपयोग क्लास ऑब्जेक्ट्स को फाइलों में लिखने के लिए किया जाता है।

फ़ाइल से ऑब्जेक्ट को पुनर्प्राप्त करने के लिए डी-सीरियलाइज़ेशन का उपयोग किया जाता है।