2009-06-05 6 views
5

मैं here अनुशंसित एक डब्ल्यूसीएफ सेवा विकसित कर रहा हूं। मूल .NET 2.0 वेब सेवा को विकसित करते समय नामस्थान संघर्षों की मेरी प्रारंभिक समस्या हल हुई, लेकिन मैं एक और समस्या पर आ गया हूं।'System.ComponentModel.PropertyChangedEventHandler' विशेष वर्ग 'सिस्टम से प्राप्त नहीं हो सकता है। MulticastDelegate'

ऑब्जेक्ट जिसे मैं डब्ल्यूसीएफ सेवा में पास करने की कोशिश कर रहा हूं, क्लाइंट में उपयोगकर्ता से जानकारी का एक समूह एकत्र करने के लिए उपयोग किया जाता है और इसके कुछ फ़ील्ड यूई नियंत्रण (इसलिए PropertyChangedEventHandler को कार्यान्वित कर रहे हैं) के लिए डेटाबेस हैं। जब मैं अपने क्लाइंट प्रोजेक्ट में svcutil द्वारा उत्पन्न प्रॉक्सी को संकलित करने का प्रयास करता हूं, तो मुझे यह त्रुटि मिलती है जो त्रुटि को प्राप्त करती है।

इस ऑब्जेक्ट के सभी डेटा को खींचकर और भेजने के लिए कक्षा में डालने (और फिर मूल प्रकार का पुनर्निर्माण) अनावश्यक प्रतीत होता है - उल्लेख करने के लिए एक हास्यास्पद लंबे समय तक नहीं लेना चाहिए।

क्या कोई कामकाज है?

+0

I ' उल उलझन में हूँ आप कहते हैं कि आप एक डब्ल्यूसीएफ सेवा विकसित कर रहे हैं, लेकिन फिर आप कहते हैं कि आप एक .NET 2.0 वेब सेवा विकसित कर रहे हैं। डब्ल्यूसीएफ हालांकि .NET 3.0+ है। मेरा जवाब .NET 3.0 पर आधारित है। –

+0

नहीं, शुरुआत में यह एक .NET 2.0 वेब सेवा थी, लेकिन 2.0 वेब सेवा में नेमस्पेस संघर्ष डिजाइन को जटिल बना रहा था, इसलिए मैंने इसके बजाय एक डब्ल्यूसीएफ सेवा बनाने का फैसला किया (जैसा कि मेरे दूसरे प्रश्न के लिंक में उल्लेख किया गया है)। स्पष्ट करने के लिए संपादित किया गया। –

+0

(टिप्पणी का उत्तर दिया गया) –

उत्तर

5

क्या मैं जांच सकता हूं? क्या आप एक वेब सेवा के लिए प्रतिनिधि पास कर रहे हैं? यह काम नहीं करेगा ... इसे * क्रमबद्ध नहीं किया जा सकता है। सबसे अच्छा, एडीओ.NET डेटा सर्विसेज (.NET 3.5SP1) एक क्वेरी-स्ट्रिंग में Expression का अनुवाद करके कुछ ऐसा ही कर सकता है ... लेकिन यह उतना करीब है जितना आपको मिलेगा। इसके अलावा, आपको एक अनुरोध ऑब्जेक्ट बनाना होगा जो नियमित गुणों के साथ आपके इरादे को समाहित करता है।

इस वेब सेवा, WCF सेवा, टीसीपी, आदि में से किसी पर लागू होता है

* = एक प्रतिनिधि अनिवार्य रूप से एक प्रकार सुरक्षित तरीका संभाल (एक वैकल्पिक लक्ष्य (उदाहरण) संदर्भ के साथ) है, यह एक्सएमएल


(संपादित)

टिप्पणियों से के रूप में उदाहरण के लिए व्यक्त किया जा सकता है, - यह बस हो सकता है कि आप अपने डेटा-अनुबंध नहीं ठहराया है; इसका मतलब है कि इसे अनुबंध का अनुमान लगाना है (और यह अक्सर गलत हो जाता है)। उदाहरण के लिए:

[DataContract] 
class Foo : IWhateverInterfaces { 
    [DataMember] 
    public string Bar {get;set;} 

    [DataMember] 
    public int Baz {get;set;} 

    public float NotPartOfTheContract {get;set;} 

    public event EventHandler AlsoNotPartOfTheContract; 
} 

जब [DataContract] का उपयोग कर, केवल सदस्यों चिह्नित [DataMember] क्रमांकित हैं - तो घटना को नजरअंदाज कर दिया जाना चाहिए। यह केवल डब्ल्यूसीएफ डेटा-कॉन्ट्रैक्ट करने का तरीका था, लेकिन एमएस ने इसे फ़ील्ड से अनुबंधों का अनुमान लगाने के लिए tweaked ... एक गलती आईएमओ, क्योंकि यह आपके द्वारा अभी की समस्या का कारण बनता है ...

+0

मैंने डब्ल्यूसीएफडी दस्तावेज़ नामक एक ऑब्जेक्ट तैयार किया जो कि मेरे मूल ऑब्जेक्ट (किसी भी डाटाबेसिंग इत्यादि को हटाकर) में कच्चे फ़ील्ड थे और मूल वस्तु में एक संपत्ति बनाई जिसने एक डब्ल्यूसीएफडी दस्तावेज़ बनाया और वापस कर दिया। ... और नहीं, मैं किसी भी प्रतिनिधि को पास नहीं कर रहा था। मेरे ऑब्जेक्ट के लिए बेस क्लास बाइंडिंगलिस्ट और INotifyPropertyChangedEvent से विरासत में मिला। अब एक पंक्ति में 2 दिन है कि आपने मेरी मदद की है। फिर, धन्यवाद मार्क। –

+0

तो ... यदि आप स्पष्ट रूप से * प्रतिनिधि को पास नहीं कर रहे थे ... मुझे आश्चर्य है कि क्या आप बस अपने डब्ल्यूसीएफ डेटा-अनुबंधों को सही तरीके से चिह्नित नहीं कर रहे हैं? मैं सवाल से झटके नहीं बता सका (क्योंकि कोई चित्रकारी कोड नहीं था)। संपादन देखें ... –

+0

इससे मेरी मदद की।मामले को निर्धारित करने में थोड़ी देर लग गई, लेकिन मेरे पास मेरे wsdl में परिभाषित वास्तविक प्रकार का एक संदर्भ था और शेष मैंने structs आदि के रूप में परिभाषित किया था। मैं शर्त लगाता हूं कि मेरे पास एक से अधिक था, तो मैंने इसे कभी नहीं सोचा होगा, लेकिन मैंने अपना खुद का प्रकार बनाया, एक डंप फोरच किया और इसे wsdl प्रकार से कॉपी किया और यह काम करता है। धन्यवाद। – CarComp

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

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