Hallo Leute,
vielleicht weis einer von Euch weiter.
Problemstellung auf ein denkbar einfachstes heruntergeschraubt.
Aufruf einer Methode mit folgender Syntax:
und so die Methode mal grob geschildert
So finde ich zwar den übergebenen Typen, aber ich brauch den Namen der Varibalen/des Members der übergeben wurde.
Also für myParams[1] muss ich quasi xAlter bekommen
und für myParams[0] dann xName!
Wer weis wie ich daran komme.
LG Andralin
Hie rnoch einmal ein komplettes Beispiel-Projekt:
vielleicht weis einer von Euch weiter.
Problemstellung auf ein denkbar einfachstes heruntergeschraubt.
Aufruf einer Methode mit folgender Syntax:
Code:
int xAlter = 29;
int xName = "Andralin";
trans("Hallo {xName}, Du bist {xAlter} Jahre", xName, xAlter)
und so die Methode mal grob geschildert
Code:
public void trans(string x, params Object[] myParams)
{
// so finde ich den übergebenen Typ
string VarArt1 = myParams[0].GetType().Name;
// also quasi 'String'
string VarArt2 = myParams[1].GetType().Name;
//oder hier 'Int32'
}
So finde ich zwar den übergebenen Typen, aber ich brauch den Namen der Varibalen/des Members der übergeben wurde.
Also für myParams[1] muss ich quasi xAlter bekommen
und für myParams[0] dann xName!
Wer weis wie ich daran komme.
LG Andralin
Hie rnoch einmal ein komplettes Beispiel-Projekt:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace myProj
{
class Program
{
static void Main(string[] args)
{
string xName = "Andralin"; string xOrt = "zu Hause";
//statt dem hier:
Console.WriteLine(translate("Hallo {0}, Du bist jetzt {1}", xName, xOrt));
// möchte ich so aufrufen
//Console.WriteLine(translate("Hallo {xName}, Du bist jetzt {xOrt}", xName, xOrt));
Console.WriteLine("Drück mal ne Taste");
Console.ReadKey();
}
public static string translate(string x, params Object[] myParams)
{
// für die 2. Art auf zu rufen, benötige ich aber den namen der übergebenen Variablen
// also tmp = myParams[nr].Name / oder so was
string tmpStr = x;
int pos = tmpStr.IndexOf("{", 0);
string xxx = myParams[0].GetType().Name;
while (tmpStr.IndexOf("{") > -1)
{
int p1 = tmpStr.IndexOf("{");
int p2 = tmpStr.IndexOf("}");
string tmpX = tmpStr.Substring(p1, p2 - p1 + 1);
tmpX = tmpX.Substring(1, tmpX.Length - 2);
int tmp = Convert.ToInt32(tmpX);
tmpStr = tmpStr.Substring(0, p1) + myParams[tmp] + tmpStr.Substring(p2 + 1);
}
return tmpStr;
}
}
}
Zuletzt bearbeitet: