निम्नलिखित वर्ग की कल्पना कीजिए:गतिशील रूप से प्रतिबिंब के माध्यम से संपत्ति गेटर/सेटर उत्पन्न या इसी तरह
public class Settings
{
[FileBackedProperty("foo.txt")]
public string Foo { get; set; }
}
मैं ऊपर करने के लिए कुछ इसी तरह लिख सकते हैं और करने में सक्षम होना चाहते हैं settings.Foo
फ़ाइल "foo.txt" से पढ़ा और settings.Foo = "bar"
"foo.txt" पर लिखें।
जाहिर है यह एक सरलीकृत उदाहरण है और मैं उपरोक्त उत्पादन अनुप्रयोग में नहीं करूँगा, लेकिन अन्य उदाहरण भी हैं, जैसे कि मैं चाहता हूं कि फू को एएसपीनेट सत्र राज्य "foo" में संग्रहीत किया जाए लेकिन मैं थक गया अधिक से अधिक निम्नलिखित कोड लिखने की:
public int Foo
{
get
{
if (Session["foo"] != null)
return Convert.ToInt32(Session["foo"]);
else
// Throw an exception or return a default value
}
set
{
Session["foo"] = value;
}
}
(एक बार फिर इस उदाहरण सरलीकृत है और मैं इसके बाद के संस्करण कोड नहीं लिखते थे, वास्तव में मैं झूठ बोल रहा हूँ, मैं ऊपर कोड है और यह refactor करने के लिए काम कर रहा हूँ , इस प्रकार यह प्रश्न)
उपर्युक्त उदाहरण तब तक ठीक है जब तक आपके पास 50 अलग-अलग सत्र मान नहीं होते हैं जिनमें सभी समान तर्क होते हैं। तो क्या कोई है कि मैं दूसरी संपत्ति को पहले जैसा कुछ बदल सकता हूं? (? गुण और प्रतिबिंब, या हो सकता है किसी अन्य विधि का उपयोग करना)
यदि आप विजुअल स्टूडियो का उपयोग कर रहे हैं तो आपको [कोड स्निपेट] (http://msdn.microsoft.com/en-us/library/ms165392%28v=vs.90%29.aspx) पर एक नज़र डालना चाहिए। वे आपको कुछ छोटा टाइप करने, वांछित कोड में विस्तार करने की अनुमति देते हैं और फिर आपको निर्दिष्ट क्षेत्रों में भरने की अनुमति देते हैं। मौजूदा प्रोप के समान, आदि –
@ जोशुआ ड्रेक यह कॉपी/पेस्ट के रूप में उतना ही बुरा लगता है। अगर मैं कार्यान्वयन को बदलना चाहता हूं तो क्या होगा? मुझे अभी भी वापस जाना है और प्रत्येक संपत्ति को व्यक्तिगत रूप से बदलना है। – thelsdj
तो क्या आप रनटाइम पर गुणों को गतिशील रूप से जोड़ना चाहते हैं? क्या आपके पास सभी सर्वर मशीनें हैं, या प्रदर्शन की कम अपेक्षाएं हैं? ऐसा नहीं है कि आप ऐसा नहीं कर सकते हैं, लेकिन मैं इसके खिलाफ सावधानी बरतता हूं। यदि आपके पास रनटाइम पर इसका मतलब नहीं था, तो आपको किसी भी कोड आउटपुट को पुन: उत्पन्न करना होगा। –