2012-03-02 21 views
1

私はC#でリフレクションを使用する必要があり、Typeというオブジェクトがあることがわかりますが、JavaのClassのように動作します。以下のJavaコードのようなタイプまたはサブタイプ:C#で "Class <?extends MyClass>"のようにするには

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 
    } 

} 

答えて

3

.NET Frameworkでは、タイプは一般的ではありません。種類は1つだけです。少なくとも静的ではなく、特定の型から派生した型を記述する型だけが必要であることを特定することはできません。もちろん

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"); 
     } 
    } 
} 
+2

+1が、これらの恐ろしいかっこを修正! –

+0

私はジェネリックについても考えていましたが、反射部分とのリンクが見えません –

+0

ジェネリックと反射に関するものですが、私は明確にするためにメインポストを編集します。 このようにして、 'Type type = myclass.getType()'のようなことをする必要があります。 –

関連する問題