2009-12-02 11 views
6

आपकी कक्षा को दो .cs में अलग करने का अच्छा विचार कब होता है और इसे आंशिक वर्ग के रूप में रखा जाता है?किस स्थिति में "आंशिक वर्ग" होना अच्छा है?

क्या कुछ संकेत दिखा रहे हैं कि आंशिक कक्षा के साथ जाने का समय है?

धन्यवाद!

उत्तर

17

जब आपको उन वर्गों के एक हिस्से को स्वत: उत्पन्न करना होता है और कक्षाओं की बाकी सामग्री को मैन्युअल रूप से लिखना होता है।

ऐसा इसलिए है कि आप मशीन से जेनरेट की गई सामग्री को एक फ़ाइल में और हाथ-कोडित कोड को किसी अन्य फ़ाइल में रख सकते हैं। ऐसा करने का लाभ यह है कि जब आपको स्रोत कोड को पुन: उत्पन्न करना होता है, तो आपका हाथ-कोडित भाग मिटा नहीं जाएगा।

यह कैसे एमएस इसके जीयूआई डिजाइनरों के लिए वर्ग सामग्री (उन *.designer.cs फ़ाइल के बारे में सोच) उत्पन्न करता है, और आप अन्य संबंधित फाइल में अपने तर्क का मांस डाल करने के लिए अनुमति देता है (*.cs)

5

यदि आप स्वतः जेनरेट किया है कोड जिसे आप विस्तारित करना चाहते हैं, आंशिक वर्ग ऐसा करने का एक शानदार तरीका है।

उदाहरण के लिए, उत्पन्न होने वाली LINQ से SQL कक्षाओं को विस्तारित करना।

3

मान लें कि आपके पास एक ही स्थान पर ईवेंट हैंडलर और अन्य जीयूआई कोड है, और अन्य गैर जीयूआई संबंधित कोड को एक ही स्थान पर रखना चाहते हैं। एमवीसी पैटर्न जो सी # में आसान नहीं है।

+2

क्यों नहीं एक * कक्षा में जीयूआई कोड * और गैर जीयूआई कोड एक और * कक्षा में * है? –

+1

आप आदर्श दुनिया में रह रहे हैं, अधिकांश सी # कोड में बिजनेस लॉजिक ईवेंट हैंडलर के भीतर ही लिखा गया है। कम से कम आंशिक कक्षाएं और निकालने से कुछ बेहतर कोड प्रबंधन प्रदान किया जाता है, इस प्रकार के रिफैक्टरिंग को आसानी से वीएस में किया जा सकता है –

6

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

public partial class MyClass 
{ 
    private class NestedClass 
    { 
     ... 
    } 
} 

प्लस वहाँ समाधान एक्सप्लोरर में एक फ़ाइल (WinForm और घोंसला Form1.designer.cs फ़ाइल की तरह करने के लिए) घोंसला करने के लिए इस छोटे चाल है।

<Compile Include="Foo.1.cs"> 
    <DependentUpon>Foo.cs</DependentUpon> 
</Compile> 

Nesting file in Visual Studio

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