【发布时间】:2018-04-25 08:31:54
【问题描述】:
是否可以(动态)获取一个类的声明名称,并在构造函数中将其作为参数传递以在类本身中设置名称变量?
例子:
public class Foo
{
public string name;
public Foo()
{
name = GetClassName();
}
}
public class SomeOtherClass
{
Foo className = new Foo();
Console.WriteLine(foo.name);
}
结果我希望它写成:"className"。
【问题讨论】:
-
你想要类名“foo”还是变量名“className”?你的例子说变量名,但你说类名
-
className不是“声明名称”(无论应该是什么),而只是 local 变量的名称。局部变量名称在运行时没有意义,并且不再为人所知(调试目的除外)。 -
所以你想要一个类的实例以它被声明/存储的第一个字段命名?我不认为这是可能的......当实例没有被放入一个字段时,这个/这应该如何工作,例如当你只是
return new Foo()来自某种工厂方法时? -
为什么一个类的实例应该关心它的reference是如何命名的?就我的理解而言,这听起来很奇怪。变量的名称与它所引用的对象完全无关。
-
这是一个非常相似(如果不相同)的问题:Finding the variable name passed to a function。
标签: c# class declaration