我需要一个方法中的类名称,例如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
答案 0 :(得分:14)
您正在寻找的是一个名为Type
,其中包含有关类的元数据。
您可以在任何object
个实例上使用typeof(class)
或.GetType()
方法。
不同的是typeof
是静态解析的,GetType
在运行时解析。
void X(Type type)
{
Console.WriteLine(type.FullName);
}
X(typeof(tblEmployee));
答案 1 :(得分:7)
您可以使用泛型和FullName
property of Type
,因此:
void WriteClassName<TClass>(TClass item)
where TClass : class {
Console.WriteLine(item.GetType().FullName);
}
然后根据您的要求在TClass
上应用约束。
答案 2 :(得分:1)
void X(Type type)
{
if(type == typeof(DesiredType))
{
Do Some Action
}
}