类型安全地将类名传递给方法

时间:2012-12-28 13:13:00

标签: c# class type-safety

我需要一个方法中的类名称,例如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 :(得分: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
    }
}