args verwenden

wolli2003

Grünschnabel
Hallo,

versuche in einer WindowsCE Anwendung den Übergabeparameter im Programmaufruf auszuwerten. Habe hierfür den Code im Main-Aufruf um "string [] args" erweitert:

static void Main(string [] args)
{
ApplicationEx.Run(new Frm_WEMain());
}

Innerhalb der Main kann ich auf die einzelnen Strings in args wunderbar zugreifen. Versuche ich allerdings in einer anderen Memberfunktion auf args zuzugreifen, kennt diese die Variable nicht (ist auch logisch). Also habe ich versucht, für die gesamte Klasse eine string-Variable anzulegen und in der Main den args[0] in diesen String zu kopieren. Das sieht wie folgt aus:

namespace OpenNETCFApplication5
{
using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;

using OpenNETCF;
using OpenNETCF.Drawing;
using OpenNETCF.Windows.Forms;
using OpenNETCF.Diagnostics;


/// <summary>
/// Summary description for Form1.
/// </summary>
public class Frm_WEMain : System.Windows.Forms.Form
{
string sStartParam;
...

Die Main hat jetzt folgenden Aufbau:

static void Main(string [] args)
{
sStartParam = args[0].ToString();
ApplicationEx.Run(new Frm_WEMain());
}

Aber jetzt meckert der Compiler:

"An object reference is required for the nonstatic field, method, or property 'OpenNETCFApplication5.Frm_WEMain.sStartParam'"

Mein Versuch, jetzt auf this zu verweisen war dann allerdings auch nicht richtig:
static void Main(string [] args)
{
this.sStartParam = args[0].ToString();
ApplicationEx.Run(new Frm_WEMain());
}

Jetzt meckert der Compiler folgendes:
"Keyword this is not valid in a static property, static method, or static field initializer"
(Er unterstreicht dabei das this)

Es muss doch irgend eine einfache Möglichkeit geben, in sämtlichen Klassen auf die Übergabeparameter zuzugreifen, oder?

Bin wieder einmal für jeden Hinweis dankbar.
 
Hi!
Versuch doch mal den String den Du für alle anderen Klassen zur Verfügung stellst Static zu machen. Die main ist eine Static Methode und somit müssen auch alle Elemtente darin static sein. Sobald Du also ein Objekt (wie. z.B. "this" - was ja nichts anderes ist als das aktuelle Objekt Deiner Klasse) benötigen würdest wäre die Methode ja nicht mehr static.
So sollte es funktionieren:
Code:
namespace ConsoleApplication1
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Class1
	{
        public static string mytype = "";

        [STAThread]
		static void Main(string[] args)
		{
            mytype = args[0];
		}
	}
}

Hoffe das hilft :)
Ciao
LieberNet
 

Neue Beiträge

Zurück