C#:限制方法参数中的类型(不是通用参数)

kpo*_*zin 9 .net c# polymorphism types

我想编写如下函数

public void Foo(System.Type t where t : MyClass)
{ ... }
Run Code Online (Sandbox Code Playgroud)

换句话说,参数类型是System.Type,我想将允许的Types 限制为派生的MyClass.

有没有办法在语法上指定它,或者t必须在运行时检查?

Tim*_*ter 9

如果你的方法必须采用Type类型作为它的参数,我认为没有办法做到这一点.如果你有方法调用的灵活性,你可以这样做:public void Foo(MyClass myClass)和通过调用.GetType()来获取Type.

扩大一点.System.Type是参数的类型,因此无法进一步指定应传递的内容.就像采用1到10之间的整数的方法一样,必须采用int然后执行运行时检查是否正确遵守了限制.