Hallo,
im Moment stehe ich ein wenig auf dem Schlauch ... wie kann ich zur Laufzeit den vollqualifizerten Namen eines Objektes herausbekommen? Angenommen, im Namespace ABC existiert ein Objekt DEF, das ein Objekt GHI instanziiert.
Wie erhalte ich über GHI zur Laufzeit den Wert ABC.DEF.GHI?
Danke,
Golo
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Hallo Eisbär,
mittels Reflection das Control ermitteln, dann gibt es in der Tat ein Property 'FullName', das wäre genau das was Du suchst.
Ciao
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
Nein. Mit dieser Technik erhalte ich die Klassen(!)-Namen, nicht die Objektnamen :S ...
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Ich weiß jetzt nicht ganz genau was du willst:
Prinzipiell hast du den Type eines Objects. Dieser entspricht dem bezüglich der Property Fullname dem Namespace inkl. Namen der Klasse, eben den vollqualifizierten Namen.
Du willst ja anscheinend wissen wie das Object heißt inkl. Namespace? Versteh ich das richtig? Dann hol dir einfach aus dem Type des Objects den Namespace und häng den Namen des Objects an - wobei ich nicht weiß, was genau das bringen soll.
.NET GUI - Die Community für grafische Oberflächen unter .NET
Jetzt kostenlos besorgen: .NET BlogBook
Norbert Eder
DasBackup
Hallo Eisbär,
jo, da kann ich mich meinem Vorredner nur anschließen. Ich kann das auch nicht nachvollziehen. Aber so wie nitronic sagt, dafür gibt es kein vorhandenes Property, das musst Du Dir selbst zusammensetzen...
Ciao
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”
Macht doch Sinn: Man stelle vor, sich einen Dump aller Variablen einer Function zu tracen. Man denke auch nur an die "Locals"-Function des Debuggers. Die werden aber offenbar über den StackFrame des Debugger SDKs geholt. Ich vermute also, dass man via Reflection nicht an lokale Variablen rankommt. Man müßte also die Funktion des Debuggers-SDK dem Programm selbst verfügbar machen. Das Programm selbst kann nur im DEBUG-Modus laufen. Dass sowas möglich ist, zeigt AOP.NET.
Mittels ParameterInfo.Name kommt man zumindest an die formalen Parameternamen ran. Das ist doch schon was.
Hallo zusammen,
nur mal der Klarheit wegen. Dann reden wir aber nicht über Objektnamen (Objekte haben keine Namen), sondern über Variablennamen.
herbivore
Hallo,
so, habe es nun:
Control tempControl = control;
string fullyQualifiedObjectName = "";
do {
fullyQualifiedObjectName = tempControl.Name + "." +
fullyQualifiedObjectName;
tempControl = tempControl.Parent;
}
while( tempControl != null );
// Cut the trailing dot.
fullyQualifiedObjectName = fullyQualifiedObjectName.Substring(0, fullyQualifiedObjectName.Length - 1);
Der Sinn liegt darin, dass über den so ermittelten String Daten aus einer Lokalisierungsdatenbank gelesen werden, um die Text-Eigenschaft eines Controls zu lokalisieren.
Viele Grüße,
der Eisbär
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Hallo Herbivore,
public class myObj
{
public myObj()
{
}
public string Objektname
{
get
{
return "Nur zum Herbivore ärgern!";
}
}
}
😉)))))))))
Bitte nur als Gag verstehen.
Ciao
Norman-Timo
A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”