2017-10-27 14 views
-1

私は現在C#でのリフレクションに取り組んでおり、質問があります。私は、抽象クラスまたはインタフェースクラスであるかもしれない別のクラス型を呼び出そうとします。だから私はインスタンスの作成ができないので、それらのメソッドを呼び出さないだけです(明らかに)。しかし、私はこれに満足していない。抽象タイプのメソッド


私の質問は:それは何とかこの問題を回避し、私は与えられた抽象クラス型のメソッドを呼び出すことができる何か、のインスタンスを作成することは可能でしょうか?テンプレートから継承するクラスを作成して抽象型にするのが好きですか?

foreach (MethodInfo m in _classType.GetMethods(bindingFlags)) 
    { 
       if (_classType.IsAbstract || _classType.IsInterface) 
       { 
        // only invoke instanciable types 
        MessageBox.Show("Abstract class and Interface cannot be invoked!"); 
       } 
       else 
       { 
        var ms = CreateStringFromMethodForCheckedBox(m); 
        if (s == ms) 
        { 
         m.Invoke(Activator.CreateInstance(_classType), null); 
        } 
       } 
    } 
+2

そして、抽象メソッドは、定義なしで何をするか分からないところで何をすると思いますか? – praty

+0

また、インターフェースについても言及しますが、インターフェース上で「メソッド」を呼び出そうとするとどうなりますか?この質問は実際にはそれ以上の情報がなければ意味をなさない。 – DavidG

答えて

1

はい、あなたが動的に抽象型を継承し、実行時に新しいクラスを作成し、あなたのクラスのメソッドを呼び出すことができます。http://www.c-sharpcorner.com/UploadFile/87b416/dynamically-create-a-class-at-runtime/

あなたはすべての抽象メソッドをオーバーライドすることを確認する必要がありますそうでない場合あなたのクラスは抽象的でなければならず、あなたは何も得られません。

+0

元の質問が間違いなく実行すべきではないことを試みているのに、これがなぜ落とされたのか分かりませんが、これは最も合理的な回避策です。 –

+0

@ TitianCernicova-Dragomirええ、私は下垂体も理解していません。 – john

+0

質問に記載されているインターフェイスはどうですか? – DavidG

関連する問題