重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

お世話になります。このカテゴリーで良いか微妙ですが。。。

C#で、以下のようにインスタンス生成+メソッド起動を行う処理について、クラス名とメソッド名を文字列で指定し、実行することはできないでしょうか?
尚、メソッドの引数は常に「ref strdata」の固定であるという前提で構いません。

ご教授、お願いします。

---------------------------------------------------
//引数(参照渡し)用の変数
strring strdata = string.Empty;
//クラスcsTestのインスタンス生成
csTest insTest = new csTest();
//メソッドmsTestを実行
insTest.msTest(ref strdata);

A 回答 (1件)

 こんばんは。



 リフレクションで実行します。以下URLが分かりやすいです。
 http://d.hatena.ne.jp/s-kita/20090201/1233473013

public class csTest
{
public csTest()
{

}

public void msTest(ref String str)
{

}
}

private void Call(Type type)
{
//コンストラクタを取り出す
System.Reflection.ConstructorInfo ci = type.GetConstructor(new Type[0]);

//コンストラクタの呼び出し
object instance = ci.Invoke(new object[0]);

//メソッドを取り出す
System.Reflection.MethodInfo mi = type.GetMethod("msTest");

//メソッドに渡すパラメータ
String str = "hello";

//メソッドの呼び出し
mi.Invoke(instance, new object[1] { str });
}

private void Form1_Load(object sender, EventArgs e)
{
Call(typeof(csTest));
}
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
おかげさまで、希望していた動作を完全に実装することができました!
URL先の内容も分かりやすく、参考になりました!

お礼日時:2010/01/18 11:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!