我需要在C#中使用反射,我知道它有一个Type
对象,可以像Java Class
一样使用反射,但我需要指定一个类型或子类型,如Java代码下面:
public class Test{
class Test2 extends Test { }
public static void doSomething(Class<? extends Test> myClass){
//doSomething with class...
}
public static void main(String[] args){
doSomething(Test2.class); //ok
doSomething(String.class); //error
}
}
答案 0 :(得分:3)
在.NET框架中,Type不是通用的。只有一种类型。你不能具体说明你只需要一个描述从给定类型派生的类型的Type,至少不是静态的。
你当然可以
public class Test
{
public void DoSomething(Type myClass)
{
if(!typeof(Test).IsAssignableFrom(myClass))
{
throw new ArgumentException("myClass must refer to Test or a derived class", "myClass");
}
}
}
答案 1 :(得分:1)
也许您想要对类型参数进行约束?
public class Student<T> where T : Person