2012-08-10 12 views
8

मैं संपत्ति निर्भरताओं को स्वतः उत्पन्न करने के लिए सिल्वरलाइट प्रोजेक्ट में Fody का उपयोग कर रहा हूं। हालांकि, यह काम नहीं करता है अगर सेटर्स में पहले से ही RaisePropertyChanged विधि कॉल है।INotifyProperty के बिना वेब सेवा संदर्भ कैसे उत्पन्न करें?

INotifyPropertyChanged के बिना वेब सेवा संदर्भ कोड उत्पन्न करने के लिए एक वर्कअराउंड हो सकता है और इसके बजाय इसे आंशिक विधि में कार्यान्वित किया जा सकता है।

मैं INotifyPropertyChanged के बिना वेब सेवा संदर्भ कोड कैसे उत्पन्न कर सकता हूं?

मेरे पास एक डब्ल्यूसीएफ सेवा है, चलिए इसे ContentService.svc कहते हैं। यह इस तरह दिखता है: जब मैं एक सेवा संदर्भ के रूप में सेवा जोड़ सकते हैं और ग्राहक कोड उत्पन्न

[ServiceContract] 
public interface IMaterialService 
{ 
    [OperationContract] 
    Material GetMaterial(int id); 
} 

[DataContract] 
public class Material 
{ 
    [DataMember] 
    public int ID { get; set; } 

    [DataMember] 
    public string Name { get; set; } 
} 

, हर वर्ग INotifyPropertyChanged लागू करने के लिए सेट है:

public partial class Material : object, System.ComponentModel.INotifyPropertyChanged { 

    private int IDField; 

    private string NameField; 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public int ID { 
     get { 
      return this.IDField; 
     } 
     set { 
      if ((this.IDField.Equals(value) != true)) { 
       this.IDField = value; 
       this.RaisePropertyChanged("ID"); 
      } 
     } 
    } 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public System.Nullable<string> Name { 
     get { 
      return this.NameField; 
     } 
     set { 
      if ((this.NameField.Equals(value) != true)) { 
       this.NameField = value; 
       this.RaisePropertyChanged("Name"); 
      } 
     } 
    } 
} 

मैं ग्राहक कोड है कि नहीं करता है कैसे उत्पन्न कर सकते हैं INotifyPropertyChanged लागू नहीं करें?

उत्तर

13

सेवा संदर्भ जोड़ने के बाद, सेवा संदर्भ के तहत फ़ाइल Reference.svcmap खोलें (आपको "प्रोजेक्ट" मेनू में "सभी फ़ाइलें दिखाएं" विकल्प सक्षम करने की आवश्यकता हो सकती है)। <EnableDataBinding> तत्व पाएं, और मान को गलत में बदलें। इससे उत्पन्न डेटा अनुबंधों से INotifyPropertyChanged हटा दिया जाएगा।

+0

यह काम करता है, बहुत बहुत धन्यवाद :) किसी के लिए भी वही समस्या है जो मुझे फोडी के रूप में करती है, मैंने साइमन क्रॉप से ​​संपर्क किया और उसने एक नया संस्करण बनाया जो मौजूदा राइजप्रोपर्टी चैंगड कॉल का समर्थन करता है, जिससे समस्या ठीक हो गई, लेकिन फिर भी यह अच्छा है जानना :) –

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