2011-10-20 13 views
14

उदाहरण के लिए मैंक्या मैं समय कोड पुनर्लेखन संकलन के लिए Roslyn का उपयोग कर सकता हूं?

public string Bar 
    { 
     get { return this.bar; } 

     set 
     { 
      if (value != this.bar) 
      { 
       this.phoneNumberValue = value; 
       PropertyChanged(this, new PropertyChangedEventArgs("Bar")); 
      } 
     } 
    } 

को,

class Foo: INotifyPropertyChanged { 
    public event PropertyChangedEventHandler PropertyChanged; 
    public int Bar {get;set;} 
} 

मैं फू वर्ग एएसटी हो और बार फिर से लिखने, संकलन समय में समय होता है।

+1

एफवाईआई आप आज इस https://github.com/SimonCropp/Fody – Simon

+1

के साथ ऐसा कर सकते हैं उस कोड का स्थान ले जाया गया था। यह अब [github.com/Fody/Fody] (http://github.com/Fody/Fody) पर है – JKor

उत्तर

15

संकलन समय पुन: लेखन आज रोज़लिन द्वारा समर्थित नहीं है, लेकिन वाक्य रचनात्मक और अर्थपूर्ण परिवर्तन निश्चित रूप से हैं। वास्तव में, आप जो कुछ करना चाहते हैं उसे देखने के लिए सीटीपी में शामिल "कार्यान्वयन नॉटिफ़ाईप्रॉपर्टी चेंज" नमूना देखें। नमूना को डिज़ाइन समय परिवर्तन और आईडीई सुविधा के रूप में कार्यान्वित किया जाता है, लेकिन आप तर्क को निकाल सकते हैं और इसे पूर्व-निर्माण कार्य की तरह कुछ बना सकते हैं जो संकलन से पहले फ़ाइलों को फिर से लिखता है।

+3

इवान टॉल्सन ने स्वचालित 'निर्भरता प्रॉपर्टी' कार्यान्वयन के बारे में भी ब्लॉग किया - http://www.mindscapehq.com/blog/index .php/2011/10/20/in-bed-with-roslyn/ –

+0

2014 में अब 2,5 साल बाद: क्या यह उत्तर अभी भी सही है? – jeromerg

+0

हां। हम जानबूझकर संकलन हुक का निर्माण नहीं कर रहे हैं, क्योंकि हम देखना चाहते हैं कि समुदाय किस प्रकार की चीजें बनाता है और कौन से परिदृश्य सामने आते हैं ताकि हम सही * हुक बना सकें जब हम करते हैं। –

2

मुझे नहीं लगता कि वर्तमान सीटीपी में यह संभव है क्योंकि संकलक को सेवा के रूप में जारी किया गया है लेकिन ऐसी कोई चीज नहीं है जो आपको संकलन प्रक्रिया में प्लग करने की अनुमति देती है जैसा कि आप नेमेर में कर सकते हैं।

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

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