2013-11-01 8 views
5

के साथ संपत्ति के लिए केवल पढ़ने के लिए फ़ील्ड जेनरेट करें क्योंकि मुझे यह नहीं मिला कि रीशेर्पर किसी संपत्ति के लिए निजी रीडोनली बैकिंग फ़ील्ड उत्पन्न करने में सक्षम है या नहीं, क्या ऐसा कोई तरीका है कि कस्टम स्क्रिप्ट को परिभाषित करने के तरीके को कैसे किया जा सकता है?ReSharper

कल्पना कीजिए कि आप एक संपत्ति

public Type PropertyName { get; set; } 

और उसके बाद आप इस लाइन पर एक कर्सर सेट, Alt + है दर्ज करें और एक मेनू आइटम जो करने के लिए

private readonly Type propertyName; 

public Type PropertyName { get { return propertyName; } } 

मैं संपत्ति बदल देती होगी खुद को उस स्थिति में पाया है जहां मैं वास्तव में कई बार इसका उपयोग करता हूं।

उत्तर

8

आर # के साथ, आप Live Template बना सकते हैं। इस मामले में:

  1. ReSharper> टेम्पलेट एक्सप्लोरर
  2. लाइव टेम्पलेट्स टैब> नया टेम्पलेट (छोटे ग्रिड आइकन)
  3. shorcut: propReadOnly
  4. विवरण (इस IntelliSense के साथ प्रयोग किया शॉर्टकट हो जाएगा): जो कुछ भी आप के लिए काम करता है ...
  5. उपलब्ध: में सी # 2.0 जहां प्रकार सदस्य घोषणा
  6. के रूप में टेम्पलेट बनाएँ अनुमति दी है:

    +०१२३५१६४१०

    private readonly $Type$ $propertyName$;

    public $Type$ $PropertyName$ { get { return $propertyName$; } }

$SomeText$ में पाठ संलग्न आर # maninpulate के लिए एक चर के रूप में है कि पाठ नामित करेंगे।

चर नाम पैनल में:

Name    Value    Editable Occurence 
Type    Choose Macro*  #2 
PropertyName  Choose Macro*  checkbox is checked 
propertyName  (see below)  not editable 
       Macro > - Value of annother variable with the first character in lower case 
         - Select "PropertyName" as the other variable 

*Choose Macro is displayed when no macro is selected; this is the default setting 

सहेजें और आप का इस्तेमाल किया शॉर्टकट टाइपिंग यानी, "propReadOnly"

+0

मेरे जैसे अन्य "लाइव टेम्पलेट न्यूब्स" के लिए, "वेरिएबल नेम पैनल" में ऊपर और नीचे तीरों का उपयोग करना सुनिश्चित करें ताकि पैरामीटर दिखाए गए क्रम में हों। शीर्ष पर "टाइप करें" के बाद, "PropertyName" के बाद, "propertyName" के बाद। धन्यवाद @ मेट्रो! – mmcfly

2

आप ReSharper के साथ अन्य तरीकों से काम कर सकते हैं।

private readonly Type propertyName; 

फिर alt + insert प्रेस संपत्ति उत्पन्न करने के लिए:

अपने निजी केवल पढ़ने के लिए समर्थन क्षेत्र बनाएँ।

यह भी देखें: Generating Properties

संपादित करें:

public MyProperty PropertyName { get { return propertyField; } } 

फिर FIELDNAME पर अपने कर्सर बनाने के लिए साथ alt + enter प्रेस: ​​

एक अन्य विकल्प पहले इस तरह एक संपत्ति बनाने के लिए है खेत। फिर आप मैदान पर कूदेंगे और alt + enter दबाकर Resharper इसे एक कन्स्ट्रक्टर पैरामीटर बना देंगे। अंतिम लेकिन कम से कम आपको अब क्षेत्र को पढ़ने के लिए alt + enter दबाए जाने का विकल्प नहीं मिलेगा।

+0

हाँ, मैं यह जानता हूँ द्वारा दृश्य स्टूडियो में तुरंत टेम्पलेट का उपयोग कर सकते हैं। लेकिन मैं शायद ही कभी एक पठनीय क्षेत्र बना देता हूं और फिर बाद में एक संपत्ति उत्पन्न करता हूं। अधिकतर, मैं एक संपत्ति बनाता हूं और बाद में मुझे पता चला कि एक संपत्ति को पढ़ा जा सकता है क्योंकि इसे किसी कन्स्ट्रक्टर में असाइन किए जाने के बाद कभी नहीं बदला जाता है। –

+0

मैं समझता हूं, शायद संपादन परिदृश्य में आपकी मदद कर सकता है। लेकिन मैं यह भी समझता हूं कि उनका अभी भी कुछ काम है जो फ़ील्ड नाम जोड़ना शामिल है। –

+0

आपके उत्तरों के लिए धन्यवाद। अंत में, मैंने इसके लिए दूसरा जवाब स्वीकार कर लिया है जो मुझे वही देता है जो मुझे चाहिए और कोई काम नहीं है। यह मेरे प्रश्न का बेहतर जवाब भी देता है, क्योंकि मैं एक कस्टम स्क्रिप्ट के लिए पूछ रहा था। –