2013-09-25 7 views
7

मुख्य उद्देश्य गतिशील शब्दकोश वस्तु आबादी और Protobuf शुद्ध का उपयोग कर इसे क्रमानुसार और क्लाइंट साइड करने के लिए WCF सेवा के पार भेजने के लिए है।Protobuf नेट त्रुटि संदेश - "नेस्टेड या दांतेदार सूचियों और सरणियों समर्थित नहीं हैं"

@marc आप कृपया मुझे एक कोड नमूने के रूप में कैसे मैं त्रुटि हल कर सकते हैं बता सकते हैं "नेस्टेड या दांतेदार सूचियों और सरणियों समर्थित नहीं हैं" जब मैं Protobuf शुद्ध का उपयोग कर क्रमानुसार करने कोशिश कर रहा हूँ।

[Serializable] 
[ProtoContract] 
public class DynamicWrapper 
{ 
    [ProtoMember(1)] 
    public List<Dictionary<string, string>> Items { get; set; } 

    public DynamicWrapper() 
    { 
     Items = new List<Dictionary<string, string>>(); 
    } 
} 

public class Service1 : IService1 
{ 
    public byte[] GetData(string sVisibleColumnList) 
    { 
     DynamicWrapper dw = new DynamicWrapper(); 
     Dictionary<string, string> d = new Dictionary<string, string>(); 
     d.Add("CUSIP", "123456"); 
     dw.Items.Add(d); 

     d = new Dictionary<string, string>(); 
     d.Add("ISIN", "456789"); 
     dw.Items.Add(d); 
     var ms = new MemoryStream(); 
     var model = ProtoBuf.Meta.RuntimeTypeModel.Default; 
     model.Serialize(ms, dw); 
     Serializer.Serialize <DynamicWrapper>(ms, dw); 
     return ms.GetBuffer(); 
    } 

} 
+0

ध्यान दें कि ऑब्जेक्ट को अलग-अलग एपीआई का उपयोग करके दो बार क्रमबद्ध किया जाता है। – tm1

उत्तर

12

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

[ProtoContract] 
public class DynamicWrapper 
{ 
    [ProtoMember(1)] 
    public List<DictWrapper> Items { get; set; } 

    public DynamicWrapper() 
    { 
     Items = new List<DictWrapper>(); 
    } 
} 

[ProtoContract] 
public class DictWrapper 
{ 
    [ProtoMember(1)] 
    public Dictionary<string, string> Dictionary { get; set; } 
} 
संबंधित मुद्दे