मैं विंडोज एपीआई कार्यों के सभी हस्ताक्षर रखना चाहता हूं जो मैं एक वर्ग में प्रोग्रामों में उपयोग कर रहा हूं, जैसे WinAPI, और एक फ़ाइल WinAPI.cs में मैं अपनी परियोजनाओं में शामिल करूंगा। कक्षा आंतरिक स्थिर और विधियों सार्वजनिक स्थैतिक बाहरी होगी। (.NET Framework स्रोत कोड से विशाल NativeMethods.cs की तरह कुछ)।विंडोज एपीआई विधि हस्ताक्षर, संरचनाओं, स्थिरांक के साथ बिग सी # स्रोत फ़ाइल: क्या वे सभी को अंतिम .exe में शामिल किया जाएगा?
मान लीजिए कि WinAPI.cs की तरह एक सौ देशी तरीकों हस्ताक्षर है दो:
[DllImport("user32.dll")]
internal static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
मैं केवल एक परियोजना (यहां तक कि एक या दो) में उनमें से कुछ का उपयोग करने के लिए जा रहा हूँ, तो मैं अपनी परियोजना में WinAPI.cs फ़ाइल शामिल करता हूं, अंतिम .exe अनावश्यक विधि घोषणाओं से भरा होगा जो मैं उपयोग नहीं कर रहा हूं (अन्य 99 या तो)?
मूल संरचना घोषणाओं के बारे में क्या, यदि मैं वर्तमान परियोजना में उनका उपयोग नहीं कर रहा हूं, तो क्या उन्हें अभी भी अंतिम .exe में शामिल किया जाएगा?
[StructLayout(LayoutKind.Sequential)] public struct POINT { public int X; public int Y; }
- स्थिरांक घोषणाओं या की तरह केवल पढ़ने के सदस्यों के बारे में
क्या:
public const int WH_JOURNALPLAYBACK = 1; public static readonly int WM_GETTEXT = 0x0D;
क्या आप जानते हैं कि वे सभी क्यों शामिल हैं? यह एक आंतरिक वर्ग है, इसलिए इसे बाहर से संदर्भित नहीं किया जाना चाहिए। सी # कंपाइलर अप्रयुक्त घोषणाओं को देखने में सक्षम क्यों नहीं है और बस उन्हें हटा दें? – AnAurelian
@ डेविड क्योंकि आप संकलन समय पर नहीं जानते हैं कि उनका उपयोग किया जाएगा या नहीं। किसी भी असेंबली (.exe फ़ाइलों सहित) को किसी अन्य प्रोजेक्ट द्वारा संदर्भित करने की आवश्यकता हो सकती है, और जब आप प्रोजेक्ट को संकलित करते हैं तो आप इसके बारे में नहीं जानते। –
भले ही यह एक आंतरिक वर्ग है? "आंतरिक प्रकार या सदस्य केवल एक ही असेंबली में फ़ाइलों के भीतर पहुंच योग्य हैं"? – AnAurelian