[英]How to do something like “Class<? extends MyClass >” in C#
我需要在C#中使用反射,我知道它有一個Type
對象,可以讓你像Java的Class
do一樣使用反射,但我需要指定一個類型或子類型,如下面的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
}
}
在.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");
}
}
}
也許你想要類型參數的約束?
public class Student<T> where T : Person
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.