1

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

有谁知道我们如何以简单的方式获取类的名称,例如 Java 可以通过class.getName()什么?

注意:是的,有一些混乱的解决方法,比如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
4

3 回答 3

10

你的意思是,像这样?

typeof(YourClass).Name

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

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

var typeName = typeof(YourClass).Name

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

Animal a = new Dog();
var typeName = a.GetType().Name;

编辑 1 的答案

你需要传递一个Type参数

void X(Type classType) 
{
     var className = classType.Name;
     Console.WriteLine(className);
}

调用X应该是这样的

X(typeof(YourClass));

或者

X(YourInstance.GetType());
于 2012-12-28T12:46:45.413 回答
1

如果class

  • 某种类型的实例:

    class.GetType().Name;
    class.GetType().FullName; // with namespace
    
  • 键入本身:

    typeof(class).Name;
    typeof(class).Name; // with namespace
    
于 2012-12-28T12:47:41.520 回答
1

试试这个:

typeof(YourClass).FullName;
于 2012-12-28T12:48:31.313 回答