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

Ali*_*eza 5 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
Run Code Online (Sandbox Code Playgroud)

Rot*_*tem 15

您正在寻找的是一个名为a Type,其中包含有关类的元数据.

您可以在任何实例上使用typeof(class)or .GetType()方法object.

不同的是typeof静态GetType解析并在运行时解决.

void X(Type type)
{
    Console.WriteLine(type.FullName);
}

X(typeof(tblEmployee));
Run Code Online (Sandbox Code Playgroud)


Gra*_*mas 7

你可以使用泛型和FullName属性Type,如下:

void WriteClassName<TClass>(TClass item)
  where TClass : class {
    Console.WriteLine(item.GetType().FullName);
}
Run Code Online (Sandbox Code Playgroud)

然后TClass根据您的要求应用约束.