簡體   English   中英

如何做“類 <? extends MyClass > “在C#中

[英]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

http://msdn.microsoft.com/en-us/library/d5x73970.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM