Java中的C#等效于class.forName()

Ali*_*eza 1 c# class

可能重复:
在C#中获取没有完整名称空间的类型名称

有没有人知道我们如何以一种简单的方式获取类的名称,就像Java可以通过什么方式一样class.getName()

NB:是的,有一些类似于CreateInstance类类型的混乱解决方法,然后得到对象的名称,但我想要一个简单的方法.

编辑1:

实际上,我需要一个方法中的类名称X.同时,我不想放松类型安全,我不会允许其他开发人员将字符串传递给该方法.像这样的东西:

void X( ??? class) // --> don't know how
{
     var className = get the name of class // --> which I don't know how
     Console.WriteLine(className);
}

X(tblEmployee); //--> usage of X, where tblEmployee is a POCO class
Run Code Online (Sandbox Code Playgroud)

Agu*_*les 10

你的意思是,像这样?

typeof(YourClass).Name
Run Code Online (Sandbox Code Playgroud)

为了澄清,在.NET框架中有一个名为的类Type.此类有一个名为的属性Name,用于检索类的名称.

因此,要在编译时检索类的类型,您可以使用typeof.

var typeName = typeof(YourClass).Name
Run Code Online (Sandbox Code Playgroud)

如果您在运行时不知道类型,则可以使用该GetType()方法检索它.这对所有.NET对象都很常见.

Animal a = new Dog();
var typeName = a.GetType().Name;
Run Code Online (Sandbox Code Playgroud)

回答编辑1

您需要传递Type参数

void X(Type classType) 
{
     var className = classType.Name;
     Console.WriteLine(className);
}
Run Code Online (Sandbox Code Playgroud)

打电话X应该是这样的

X(typeof(YourClass));
Run Code Online (Sandbox Code Playgroud)

要么

X(YourInstance.GetType());
Run Code Online (Sandbox Code Playgroud)