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

时间:2012-12-28 12:45:24

标签: c# class

  

可能重复:
  Get type name without full namespace in 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

3 个答案:

答案 0 :(得分:9)

你的意思是,像这样?

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());

答案 1 :(得分:1)

如果class

  • 某种类型的实例:

    class.GetType().Name;
    class.GetType().FullName; // with namespace
    
  • 输入自己:

    typeof(class).Name;
    typeof(class).Name; // with namespace
    

答案 2 :(得分:1)

试试这个:

typeof(YourClass).FullName;