Is it possible to print the class name from within a static function?
e.g ...
public class foo
{
static void printName()
{
// Print the class name e.g. foo
}
}
Is it possible to print the class name from within a static function?
e.g ...
public class foo
{
static void printName()
{
// Print the class name e.g. foo
}
}
A (cleaner, IMO) alternative (still slow as hell and I would cringe if I saw this in a production code base):
By the way, if you're doing this for logging, some logging frameworks (such as log4net) have the ability built in. And yes, they warn you in the docs that it's a potential performance nightmare.
StackTrace class can do that.
Since C# 6.0 there exists an even simpler and faster way to get a type name as a string without typing a string literal in your code, using the
nameof
keyword:While the StackTrace answers are correct, they do have an overhead. If you simply want safety against changing the name, consider
typeof(foo).Name
. Since static methods can't be virtual, this should usually be fine.Since static methods cannot be inherited the class name will be known to you when you write the method. Why not just hardcode it?