C#获取类声明名称

时间:2018-04-25 08:31:55

标签: c# class declaration

是否可以获取类的声明名称(动态)并将其作为参数传递给构造函数以在类本身中设置name变量?

示例:

public class Foo
{
    public string name;
    public Foo()
    {
        name = GetClassName();
    }
}

public class SomeOtherClass
{
    Foo className = new Foo();
    Console.WriteLine(foo.name);
}

结果我希望它写成:"className"

2 个答案:

答案 0 :(得分:3)

没有。这是不可能的。没有使用参数就无法传入变量名。

这是你能得到的最接近的地方:

<div id="app">
<div v-for="aln in data">
{{aln._id}}
{{aln.no}}
{{new Date(aln.orDate).getFullYear()}}
</div>
</div>

答案 1 :(得分:0)

这听起来像是一个奇怪的要求。变量只不过是对对象的引用。该引用的名称绝不与 what 此变量引用有关。因此,实际引用的对象对其引用一无所知。实际上,您甚至可以对同一Foo个实例进行多次引用。那么实例应该如何知道您引用的变量?那么在下面的例子中会发生什么:

var f = new Foo();
var b = f;

现在您有两个对Foo的同一个实例的引用。实例无法知道哪个软管是正确的,除非您通过使用参数(例如,对您的构造函数)向其提供信息。如果你有一个工厂创建你的Foo - 实例:

,事情会变得更糟
void CreateFoo()
{
    return new Foo();
}
// ...
var f = CreateFoo();

现在你有了进一步的间接性,Foo的构造函数肯定不会在你的调用堆栈中的所有层中冒泡,直到它到达某个 assignement ,它可能会得到实际的名称。实际上你可能甚至没有将你的实例分配给任何东西 - 尽管这只是一个好主意:

CreateFoo();  // create an instance and throw it away

无论如何,如果要将实例的成员设置为某个值,则应该向该实例提供该值。帕特里克的答案告诉你如何这样做。