你能传递一个类型并强制执行C#中传递的类型吗?

Mic*_*r3D 3 c# types

我设置了一个方法来传递一个类型作为参数

private void SomeMethod(System.Type type)
    {
        //some stuff
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法强制执行该类型,以便您只能传入从特定基类继承的类型?

nne*_*neo 7

尝试使您的函数通用,并通过泛型类型参数传递type参数:

private void SomeMethod<T>() where T : U {
    Type type = typeof(T);
    // some stuff
}
Run Code Online (Sandbox Code Playgroud)

您可以使用此处列出的任何类型约束.

如果它必须处理任意类型的对象(例如,当你无法控制谁调用该函数时),那么你可能只需要使用运行时断言:

private void SomeMethod(System.Type type)
{
    if(!typeof(U).IsAssignableFrom(type)) {
        throw new ArgumentException("type must extend U!");
}
Run Code Online (Sandbox Code Playgroud)

另请参阅有关类型限制的此问题.