Laden...

Variablenwert in virtueller Console anzeigen

Erstellt von FeelFlow vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.192 Views
F
FeelFlow Themenstarter:in
67 Beiträge seit 2010
vor 13 Jahren
Variablenwert in virtueller Console anzeigen

Hiho.

In einem Berechnungsprogramm habe ich eine virtuelle Console drin. Bisher funktioniert alles super. Ich möchte die Console um eine Funktion ergänzen, die mir von einer beliebigen Variable aus meinen Prog den Wert ausgibt.

Also:
Konsoleneingabe:

get string1

Ausgabe:

is "blablabla"

Leider habe ich keine Ahnung wie ich das machen kann. wäre für einige Tipps dankbar.

Vorbild für meine Console war diese

Danke
Flo

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

mittels Reflektion kannst du auf die Felder einer Klasse zugreifen. Auf Variablen in Methoden ist das AFAIK nicht anwendbar.

Beispiel zur Veranschaulichung - die Erweiterung auf dein gewünschtes Verhalten ist dir überlassen 😉


using System;
using System.Reflection;

namespace ConsoleApplication1
{
	class Program
	{
		static void Main(string[] args)
		{
			Foo foo = new Foo();
			Type t = typeof(Foo);
			BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance;
			FieldInfo fi = t.GetField("_myField", flags);
			object value = fi.GetValue(foo);
			Console.WriteLine(value);
			Console.ReadKey();
		}
	}

	public class Foo
	{
		private int _myField = 3;
	}
}

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

F
FeelFlow Themenstarter:in
67 Beiträge seit 2010
vor 13 Jahren

Wäre aber nice, wenn man wenigstens die globalen variablen meines forms mi reinbringen könnte

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo FeelFlow,

Wäre aber nice, wenn man wenigstens die globalen variablen meines forms mi reinbringen könnte

Kannst du ja.

Es ist nur nicht möglich die Variablen aus den Methoden rauszuholen.
Aber an die Klassenvariablen kommst du locker ran.

Machs einfach so wie von Gfoidl beschrieben. Wobei Foo dann dein Form wäre.
Und mit GetField holst du dir die Felder raus und mit GetProperty holst du dir deine öffentlichen Eigenschaften raus.

Gruss
Michael

F
FeelFlow Themenstarter:in
67 Beiträge seit 2010
vor 13 Jahren

Ja das war klar, dass ich nicht an die Methodenvariablen komme.

Wäre es möglich, alle Globalen Variablen abzurufen. Sprich, er gibt mir die Bezeichner aller Globalen Variablen aus?

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo FeelFlow,

es gibt keine globalen Variablen in C#. Wie du an Membervariablen kommst, hat gfoidl bereits gezeigt.

herbivore