C# 等效于 Java 中的 class.forName() [重复]
Posted
技术标签:
【中文标题】C# 等效于 Java 中的 class.forName() [重复]【英文标题】:C# equivalent of class.forName() in Java [duplicate] 【发布时间】:2012-12-13 17:37:40 【问题描述】:可能重复: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
【问题讨论】:
【参考方案1】:你是说,像这样?
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());
【讨论】:
【参考方案2】:试试这个:
typeof(YourClass).FullName;
【讨论】:
【参考方案3】:如果class
是
某种类型的实例:
class.GetType().Name;
class.GetType().FullName; // with namespace
输入自己:
typeof(class).Name;
typeof(class).Name; // with namespace
【讨论】:
以上是关于C# 等效于 Java 中的 class.forName() [重复]的主要内容,如果未能解决你的问题,请参考以下文章
C# 等效于 Java 中的 class.forName() [重复]
C# 等效于 Java 的 Arrays.fill() 方法[重复]