मेरे पास डेटाकंट्रैक्ट्स के साथ एक असेंबली है और मुझे जावा सिस्टम के साथ डेटा का आदान-प्रदान करने में सक्षम होने के लिए .proto स्कीमा उत्पन्न करने की आवश्यकता है। डेटाकंट्रैक्ट कोड को बदला जा सकता है लेकिन मैं इसमें [ProtoContract]
और [ProtoMember]
विशेषता नहीं जोड़ सकता क्योंकि इसका परिणाम प्रोटोबफ-नेट असेंबली निर्भरता में होगा। हम सिस्टम के सी # भागों में डब्ल्यूसीएफ का उपयोग करते हैं, इसलिए हम अधिकांश सी # परियोजनाओं में प्रोटो-बफ असेंबली पर निर्भरता नहीं लेना चाहते हैं जो जावा सिस्टम के साथ काम नहीं करते हैं।गुणों के बिना प्रोटोबफ-नेट क्रमबद्धता
Protobuf शुद्ध साइट पर एक GettingStarted खंड में यह कहा जाता है कि:
गुण पसंद नहीं है?
v2 में, विशेषता के साथ किए जा सकने वाले सभी चीजों को रनटाइम पर RuntimeTypeModel के माध्यम से भी कॉन्फ़िगर किया जा सकता है।
हालांकि मुझे कोई संकेत नहीं है कि वास्तव में गुणों के बिना क्रमबद्धता को कैसे कॉन्फ़िगर किया जाए और मैंने इसका कोई उदाहरण नहीं देखा है। इस जवाब से ज्यादातर पूर्व-संपादन सवाल है, जहां false
था से संबंधित है:
मैं
[DataContract]
public class MyEntity
{
[DataMember(Order = 1)]
public String PropertyA { get; set; }
[DataMember(Order = 2)]
public int PropertyB { get; set; }
}
RuntimeTypeModel.Default.Add(typeof(MyEntity), false);
string proto = Serializer.GetProto<MyEntity>();
करने के लिए और proto
package ProtobufTest;
message MyEntity {
}
त्वरित प्रतिक्रिया के लिए धन्यवाद! मैं एक ही संस्करण का उपयोग करता हूं। मेरे 'RuntimeTypeModel.Default.Add (typeof (MyEntity), ...) में दूसरा पैरामीटर वास्तव में' झूठा 'था। 'सत्य' के साथ या उस कॉल के बिना मुझे वही परिणाम मिलता है जैसा आप करते हैं। – Mike
@ माइक आह, दाएं; हां, कि 'झूठा' का अर्थ है "गुणों को न देखें", जिसमें 'डेटामेम्बर (ऑर्डर = एन)' विशेषताओं को नहीं देखा गया है।यदि आप 'झूठी' पास करते हैं, तो आपको इसे मैन्युअल रूप से कॉन्फ़िगर करने की आवश्यकता है * - जो मैंने उपरोक्त अंतिम उदाहरण में किया है। यदि आप 'डेटामेम्बर (ऑर्डर = एन)' विशेषताओं का उपयोग करना चाहते हैं: 'सत्य' –
कहें, वैसे, यह अच्छा होगा।' (1, "PropertyA") 'भाग दूसरे के रूप में अभिव्यक्ति स्वीकार करने के लिए मजबूत-टाइपिंग और कंपाइलर जांच के लिए पैरामीटर :) यह गैर-जिम्मेदार प्रकारों के साथ काम करना आसान कर देगा। – Mike