में विधानसभा स्वतंत्र सीरियलाइजेशन मैं सीरियलाइजेशन/डीएसरियलाइजेशन तकनीक का उपयोग करता हूं। बाइनरीफॉर्मेटर कक्षा। हर बार जब नई असेंबली बनाई जाती है तो बाइनरीफॉर्मेटर द्विआधारी डेटा को Deserialize नहीं कर सकता है भले ही कक्षा संरचना समान है, लेकिन असेंबली संस्करण अलग है। क्या कक्षा संरचना अपरिवर्तित रहने पर असेंबली संस्करण की जांच के बिना बाइनरी बफर को deserialize संभव है?एनईटी
एनईटी
उत्तर
इस प्रयास करें:
public sealed class CurrentAssemblyDeserializationBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
return Type.GetType(String.Format("{0}, {1}", typeName, Assembly.GetExecutingAssembly().FullName));
}
}
formatter.Binder = new CurrentAssemblyDeserializationBinder();
formatter.Deserialize(inStream);
थ्रेड पोस्टर जोड़ा गया:
हाँ, यह काम करता है। बस सुनिश्चित करें कि बाइनरी डेटा में किसी भी प्रकार का सिस्टम। जेनेरिक या अन्य लीब्स मौजूद हैं, तो आपको उन्हें बिना किसी बदलाव के पारित करना होगा। "ResizableControls" - पुरानी असेंबली lib 'नाम, "EntityLib" - नया असेंबली नाम। इसके अलावा, संस्करण संख्या को भी मांग पर बदला जाना है।
public sealed class CurrentAssemblyDeserializationBinder : SerializationBinder
{
public override Type BindToType(string assemblyName, string typeName)
{
string name;
if (assemblyName.Contains("ResizableControl"))
{
name = Assembly.GetAssembly(typeof(EntityLib.Pattern)).ToString();
}
else
{
name = assemblyName;
}
return Type.GetType(String.Format("{0}, {1}",
typeName.Replace("ResizableControl", "EntityLib"), name));
}
}
धन्यवाद, यह वही है जो मुझे चाहिए।
क्या यह deserialization असेंबली स्वतंत्र बनाता है? –
@ किर्क रोब द बाइनरी फॉर्मेटर सीरियलाइज्ड ऑब्जेक्ट के भीतर प्रकार की जानकारी संग्रहीत करता है ताकि यह जान सके कि किस प्रकार इसे deserialize करने के लिए। सीरियलाइजेशन बाइंडर क्लास से विरासत में, बाइनरी फॉर्मेटर से मौजूदा असेंबली में मौजूद प्रकारों के सभी अनुरोधों को रीडायरेक्ट करना संभव है। अगर यह काम करता है तो मुझे बताएं। –
शायद एक और धारावाहिक तकनीक का उपयोग करना बेहतर है, जैसे मार्क ग्रेवेल ने कहा। हालांकि आपने अभी इसके साथ अपना जीवन बचाया है। मैं इसे बाइनरी सॉकेट कनेक्शन में उपयोग कर रहा हूं जो बाइनरीफॉर्मेटर के साथ वास्तव में अच्छा है। धन्यवाद! – Vinzenz
मुझे लगता है कि BinaryFormatter के साथ एक पता है कि समस्या यह है - here एक संभव समाधान आप किस प्रकार एक SerializationBinder साथ लोड करने के लिए नियंत्रित कर सकते हैं - और एक उदाहरण कैसे (लगभग सभी .net languagues में) इस का उपयोग करने के लिए लिंक कोड प्रदान करता है
उत्तर के लिए धन्यवाद। यह अच्छा है। एक "लेकिन" है - मेरे मामले में, वर्ग संरचना समान है, असेंबली अलग है, असेंबली का संस्करण भी वही है, लेकिन बाइनरीफॉर्मेटर सभी विवरणों की जांच करता है, जैसे फाइल बनाएं दिनांक। और यह deserialization undoable बनाता है। –
यह सही जवाब है !!!! महान! मेरी मदद की। – Raymond
यह BinaryFormatter
के साथ निहित है। कुछ उन्नत चीजें हैं जो आप इसके आसपास पाने के लिए कर सकते हैं (सरोगेट्स आदि के साथ), लेकिन यह आसान नहीं है और मैं ईमानदारी से इसकी अनुशंसा नहीं करता हूं।
I दृढ़ता से सुझाव देता है कि आप अनुबंध-आधारित धारावाहिक देखें; उदाहरण के लिए:
XmlSerializer
DataContractSerializer
(लेकिन नहींNetDataContractSerializer
)- Protobuf शुद्ध
(मैं पिछले के प्रति पक्षपाती हूँ के रूप में यह एक बहुत अधिक कुशल उत्पादन देता है , और जानबूझकर कुछ और संस्करण समस्याओं से बचाता है)
उन सभी मामलों में, डेटा संग्रहण (कम से कम, डिफ़ॉल्ट सेटिंग्स के साथ) किसी भी प्रकारों के ज्ञान को शामिल करता है, नामों के अनुसार अनुबंध के अनुसार, या निर्दिष्ट (आमतौर पर विशेषताओं में) शामिल है।
- 1. एनईटी
- 2. एनईटी 2.0
- 3. एनईटी 3.0
- 4. डीडीडी/एनईटी
- 5. सी ++/एनईटी दिग्गज
- 6. क्या सॉर्टिंग एल्गोरिदम एनईटी फ्रेमवर्क
- 7. एनईटी विनफॉर्म प्रतिपादन कैसे करें
- 8. एनईटी पुस्तकालयों को आरएसटी पैकेट को
- 9. एनईटी डिक्शनरी को संशोधित करते हुए
- 10. गैर-एनईटी सेवाओं के साथ एडीएफएस 2.0 का उपयोग
- 11. कक्षा पुस्तकालय (सी #/एनईटी) में एक वेब संदर्भ का उपभोग
- 12. सी #/एनईटी विश्लेषण उपकरण दौड़ की स्थिति/डेडलॉक्स खोजने के लिए
- 13. एनईटी 4 में एन्युमेरेटफाइल और एन्युमेरेटफाइल सिस्टम सिस्टम के बीच क्या अंतर है?
- 14. क्या एनईटी जीसी गड़बड़ी एक अव्यवस्थित वस्तु के साथ असीमित तरीके से निष्पादित करेगा?
- 15. ओओपी से एनईटी में शुद्ध कार्यात्मक उन्मुख प्रोग्रामिंग सोच के लिए सोचना कितना मुश्किल है?
- 16. क्या यह निर्धारित करना संभव है कि एनईटी असेंबली वास्तव में कौन सी भाषा लिखी गई थी?
- 17. सी # सेलेनियम
- 18. संगठित होना ऑपरेटर और VB.NET में सशर्त ऑपरेटर
- 19. मैं वैकल्पिक वेबब्रोसर (मोज़िला या फ़ायरफ़ॉक्स) कैसे खोलूं और विशिष्ट यूआरएल कैसे दिखाऊं?
- 20. आप अपने ओएस में किस भाषा का उपयोग करेंगे?
- 21. .NET 3.5 में CultureInfo क्लास द्वारा कौन सी संस्कृतियों का समर्थन किया जाता है?
- 22. गतिशील भाषाओं में डोमेन संचालित डिजाइन प्रयास?
- 23. सी # पीएफएक्स प्रारूप
- 24. एमवीसी/एएसपी.नेट के साथ सी # प्रोग्रामिंग शुरू करने पर मुझे कुछ जानकारी कहां मिल सकती है?
- 25. इकाई फ्रेमवर्क - सी # या वीबी.Net
- 26. सी #: क्या उनके आवंटन के रिवर्स ऑर्डर में संसाधनों का निपटान करने का कोई फायदा है?
- 27. .NET EDIFACT/X12 फ्रेमवर्क
- 28. क्या एकाधिक एससीएम प्रदाता के एपीआई लपेटने के लिए सी # लाइब्रेरी है?
- 29. क्या विजुअल स्टूडियो 2012 csproj 2010 के साथ पिछड़ा संगत है?
- 30. सी # "स्वरूपण" मानकों क्या हैं?
क्या आप कक्षा को एक अलग असेंबली में deserialized करने के लिए स्थानांतरित कर सकते हैं? जाहिर है यह बदल नहीं रहा है? – mtijn
हाँ, मैं कर सकता हूँ। मैं असेंबली संस्करण की जांच को छोड़ने और इसे अपने जोखिम पर रखने का एक तरीका ढूंढ रहा हूं। –
मैंने पोस्ट किए गए लिंक को देखें – Carsten