2010-05-04 7 views
9

शीर्षक स्पष्ट है, मुझे पता होना चाहिए कि सी # में ऑब्जेक्ट इंस्टेंस के साथ विधियों को क्रमबद्ध किया गया है, मुझे पता है कि वे जावा में नहीं हैं लेकिन मैं सी # के लिए थोड़ा नया हूं। यदि वे नहीं करते हैं, तो क्या मुझे किसी अन्य पीसी पर भेजते समय मूल पैकेज को बाइट स्ट्रीम (क्रमबद्ध ऑब्जेक्ट) के साथ एक पैकेज में रखना होगा? क्या मूल वर्ग एक डीएलएल फ़ाइल की तरह हो सकता है?क्या .NET में डेटा सदस्यों के साथ विधियों को भी क्रमबद्ध किया गया है?

+1

जानकारी के लिए, धारावाहिक API के ** बहुत ** ** हैं। वे अलग-अलग व्यवहार करते हैं - यह * लगता है * जैसे आप 'बाइनरीफॉर्मेटर' का उपयोग कर रहे हैं, लेकिन आम तौर पर आपको यह स्पष्ट करने की कोशिश करनी चाहिए कि आप किस एपीआई का उपयोग कर रहे हैं। –

+0

आपकी टिप्पणी नहीं मिली? – Lisa

+0

बीटीडब्ल्यू, सीरियलाइजेशन के पास सी # के साथ लगभग कुछ भी नहीं है, और सब कुछ .NET के साथ करना है। –

उत्तर

14

नहीं। प्रकार की जानकारी राज्य के साथ क्रमबद्ध है। डेटा को deserialize करने के लिए, आपके कार्यक्रम के प्रकार (विधियों सहित) असेंबली तक पहुंच की आवश्यकता होगी।

+0

आप असेंबली कह रहे हैं ताकि डीएलएल फ़ाइल के रूप में मूल वर्ग के तरीके ठीक काम करेंगे, है ना? – Lisa

+1

@Shaza: हां। दोनों पक्षों (क्रमिकरण और deserialization) असेंबली (आमतौर पर डीएलएल) होने की आवश्यकता है जिसमें प्रकार serialized किया जा रहा है। Serialization कक्षाओं द्वारा प्रकार को सही ढंग से स्थापित करने के क्रम में यह खोजने योग्य होना चाहिए। –

2

तरीके क्रमबद्ध नहीं हैं।

मुझे आपके परिदृश्य के बारे में पता नहीं है, लेकिन लाइब्रेरी (असेंबली/डीएलएल) में डालने और दूसरे छोर में इसका उपयोग करने से आप सभी को प्राप्त कर सकते हैं।

Ps। आपको शायद कुछ परिदृश्यों में शामिल कारकों के साथ कुछ और प्रश्न पूछना चाहिए। यदि आप गतिशील रूप से & कोड को चलाने का इरादा रखते हैं, तो आप भयानक सुरक्षा परिणाम बना सकते हैं।

1

मैं उलझन में था जब .NET पहले serialization के साथ आया था। मुझे लगता है कि यह इस तथ्य से आया है कि ज्यादातर किताबें और गाइड का उल्लेख है कि यह आपको अपने 'ऑब्जेक्ट्स' को एक्सएमएल के रूप में क्रमबद्ध करने और उन्हें चारों ओर स्थानांतरित करने की अनुमति देता है, तथ्य यह है कि आप वास्तव में अपने ऑब्जेक्ट के मानों को हाइड्रेट कर रहे हैं ताकि आप उन्हें बाद में निर्जलित कर सकें। किसी भी समय आप अपनी पूरी ऑब्जेक्ट को डिस्क पर सहेज रहे हैं क्योंकि उसे डीएलएल की आवश्यकता होगी और एक्सएमएल फाइल में निहित नहीं है।

9

यह समझना महत्वपूर्ण है अगर आप

class C 
{ 
    private int _m; 
    private int _n; 

    int Meth(int p) 
    { 
     return _m + _n + p; 
    } 
} 

तरह सी एक वर्ग सीखा है आसान हो सकता है

typedef struct 
{ 
    int _m; 
    int _n; 
    // NO function pointers necessary 
} C; 

void C_Meth(C* obj, int p) 
{ 
    return obj->_m + obj->_n + p; 
} 

के लिए अनिवार्य रूप से वाक्यात्मक चीनी है यह अनिवार्य रूप से है कैसे गैर आभासी तरीकों में लागू किया जाता है वस्तु उन्मुख भाषाओं। यहां महत्वपूर्ण बात यह है कि उदाहरण डेटा के भाग नहीं हैं।

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

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