के बाहर कमांड लाइन पैरामीटर का उपयोग कैसे करें मैं एक .NET क्लास लिख रहा हूं जिसे प्रक्रिया की कमांड लाइन को पार्स करने की आवश्यकता है। मैं मुख्य() विधि और उस वर्ग के बीच निर्भरता नहीं चाहता हूं। कक्षा कमांड लाइन तक कैसे पहुंच सकती है?मुख्य में सी #
उत्तर
कॉल Environment.GetCommandLineArgs()
पर कॉल करें।
System.Diagnostics.Process.GetCurrentProcess().StartInfo.Arguments
वास्तव में, यह काम नहीं प्रतीत होता है। यह हमेशा खाली लगता है। Http://stackoverflow.com/questions/344056/why-is-startinfo-processstartinfo-always-empty – Carsten
अपने एप्लिकेशन के विकल्प रखने वाली कक्षा बनाएं। मुख्य विधि में उस वर्ग का एक उदाहरण बनाएं, इसे कमांड लाइन तर्क के साथ प्रारंभ करें, और उसे आवश्यक कक्षाओं में पास करें।
वैकल्पिक रूप से, आप उसके बाद यह एक CustomConfigClass.Create()
विधि Environment.GetCommandLineArgs()
का उपयोग करता है के माध्यम से बनाया होने से वर्ग किसी भी समय initialised हो सकता था।
पहला विकल्प मेरी सिफारिश होगी, क्योंकि यह कक्षा परीक्षण के लिए तैयार करने के लिए कक्षा को आसान बनाता है और कमांड लाइन पर निर्भरता के कारण आवेदन को तोड़ने के बाद बाद की तारीख में कॉन्फ़िगरेशन की वैकल्पिक विधि पर स्विच करता है।
देखें पहला विकल्प अभी भी अन्य वर्ग के बारे में जानने के लिए मुख्य विधि की आवश्यकता है, इसलिए यह मेरी समस्या का समाधान नहीं करता है। मैं एक आईओसी कंटेनर का उपयोग कर रहा हूं, इसलिए मैं एक ऐसी सेवा तैयार करूंगा जो GetCommandLineArgs कार्यक्षमता का खुलासा करे, और मेरी दूसरी सेवा इस पर निर्भर करे। धन्यवाद। –
हालांकि यह मेरे बिंदु को थोड़ा याद करता है, हालांकि। यदि आप आईओसी का उपयोग कर रहे हैं, तो कमांड लाइन तर्कों को वापस करने के लिए कोई सेवा नहीं है, एक सेवा इंटरफ़ेस है जो कॉन्फ़िगर देता है, और इसे उस वर्ग के साथ कार्यान्वित करता है जो इसे कमांड लाइन से प्राप्त करता है। इस तरह आप यूनिट परीक्षण के लिए किसी अन्य वर्ग के साथ प्रतिस्थापित कर सकते हैं। –
स्ट्रिंग [] myStr = Environment.GetCommandLineArgs();
उदाहरण को पूरा करने के लिए हमेशा अच्छा होता है।
तो आप का उपयोग NET कम्पैक्ट फ्रेमवर्क, Environment.GetCommandLineArgs() विधि लागू नहीं है और System.Diagnostics.Process.GetCurrentProcess()। StartInfo.Arguments हमेशा रिक्त स्ट्रिंग देता है, तो आप मुख्य कार्य का उपयोग करना चाहिए और अपने अन्य वर्गों के लिए तर्क पास करें।
एक उदाहरण:
[MTAThread]
static void Main(String[] commandLineArguments)
{
CommandLineHelper.parse(commandLineArguments);
}
public static class CommandLineHelper
{
public static void parse(String[] commandLineArguments) {
// add your code here
}
}
कॉम्पैक्ट फ्रेमवर्क के लिए धन्यवाद। मेरे मामले में जब मैं निर्दिष्ट किया गया था तो मुख्य फॉर्म नहीं दिखाना चाहता था, ताकि exe चुप मोड में चलेगा, लेकिन जैसा कि आपने सुझाव दिया है कि आप उन तर्कों को स्थिर वर्ग पर संग्रहीत कर सकते हैं जो सभी रूपों के लिए उपलब्ध होगा आवेदन। यह किसी भी ढांचे में काम करना चाहिए। यहां रुचि रखने वालों के लिए मेरा कोड था। [MTAThread] स्थैतिक शून्य मुख्य (स्ट्रिंग [] cmd) { अगर (cmd.Length == 0) एप्लिकेशन। रुन (नया frmMain()); अन्य संदेशबॉक्स। शो (cmd [0]); } – kuklei
- 1. मुख्य सी ++
- 2. मुख्य सी ++
- 3. सी में मुख्य के पैरामीटर ++
- 4. मुख्य() सी, सी ++, जावा, सी #
- 5. सी ++: मुख्य लूप
- 6. सी # मुख्य() विधि
- 7. कौन सी में मुख्य कार्य कॉल
- 8. सी ++ मुख्य() एक बड़े OOP में परियोजना
- 9. सी # में घटनाक्रम का मुख्य उद्देश्य
- 10. मुख्य()
- 11. मुख्य
- 12. मुख्य()
- 13. सी # Windows सेवा मुख्य विधि
- 14. साझा ऑब्जेक्ट मुख्य बाइनरी, सी ++
- 15. सी मुख्य लूप 100% सीपीयू
- 16. सी # लाइब्रेरी में मुख्य थ्रेड में चलने का पता लगाना
- 17. मुख्य
- 18. मुख्य
- 19. मुख्य
- 20. QApplication गैर मुख्य थ्रेड में
- 21. मुख्य() फ़ंक्शन?
- 22. NSOperation मुख्य में NSAutoreleasePool?
- 23. कोई मुख्य() WPF में?
- 24. नामस्थान में मुख्य
- 25. मुख्य() फ़ंक्शन
- 26. सी # WinForms: कैसे मुख्य समारोह STAThreadAttribute
- 27. सी ++ - int मुख्य (int argc, char ** argv)
- 28. सी ++ शून्य वापसी का मुख्य प्रकार()
- 29. क्या रूबी में सी की तरह "मुख्य" विधि है?
- 30. सी # में प्रक्रिया की मुख्य विंडो हैंडल कैसे प्राप्त करें?
GetCommandLineArgs है [गंभीरता से त्रुटिपूर्ण] (http://stackoverflow.com/questions/9287812/backslash-and-quote-in-command-line-arguments)। से बचें। प्रचार कीजिये। – Neolisk