Como saber nombre de clase desde método estático?

25/01/2004 - 06:42 por Néstor Marcel Sánchez Ahumada | Informe spam
Hola... tengo el siguiente problema ...
necesito entregarle a un objeto el nombre la clase que lo llamó...
lo cual es fácil si hago una llamada como Metodo(
this.GetType().ToString() );
pero como lo hago si la llamada la hago desde un método estático?
pues entonces no podré utilizar "this".

ejemplo:
class Avisador
{
void Avisa( string Mensaje )
{ System.Console.WriteLine( "Llamado por " + Mensaje );
}

class Cliente
{
static Cliente()
{
Avisa( this.GetType() ); // Error... no puedo utilizar "this"
pues este constructor es de clase
}
}

La idea es no tener que poner en duro el nombre de la clase.
De antemano gracias,

Néstor.
 

Leer las respuestas

#1 sergi
25/01/2004 - 13:22 | Informe spam
me parece que no respondí al grupo >_<
bueno, te hice este pequeño ejemplo. Para lo que quieres puedes usar
System.Diagnostics.StackFrame

<code>

using System;
using System.Diagnostics;
using System.Reflection;

namespace TraceCaller
{
public class Callee
{
public void Meth()
{
StackFrame sFrame = new StackFrame( 1, true );

MethodBase m = sFrame.GetMethod();

string mName = m.Name;
string cClassName = m.ReflectedType.Name;

Console.WriteLine("método que me llamó : '{0}' de la clase : '{1}'",
mName, cClassName);

}
}
public class Caller
{

public static void CallMeth()
{
Callee c = new Callee();
c.Meth();

}

}
public class Tester
{
static void Main(string[]args)
{
Caller.CallMeth();
Console.Read();
}
}
}
</code>

Un saludo,

Sergio Borràs

"Néstor Marcel Sánchez Ahumada" wrote in message
news:eSC8$
Hola... tengo el siguiente problema ...
necesito entregarle a un objeto el nombre la clase que lo llamó...
lo cual es fácil si hago una llamada como Metodo(
this.GetType().ToString() );
pero como lo hago si la llamada la hago desde un método estático?
pues entonces no podré utilizar "this".

ejemplo:
class Avisador
{
void Avisa( string Mensaje )
{ System.Console.WriteLine( "Llamado por " + Mensaje );
}

class Cliente
{
static Cliente()
{
Avisa( this.GetType() ); // Error... no puedo utilizar "this"
pues este constructor es de clase
}
}

La idea es no tener que poner en duro el nombre de la clase.
De antemano gracias,

Néstor.


Preguntas similares