以前はリフレクションの使用に問題がありましたが、これはhereです。名前と再入力でメソッドを見つけるためのリフレクション
質問に対する回答を受け取り、それを私のプロジェクトに実装しようとしたが、私はまだ別の壁に衝突したようだ。
は基本的に私はこのコードを持っている:のparamが文字列ある
String[] arr = {"", conStr, ""};
var myType = (typeof(JaberoDC.JaberoDC.JaberoDC));
var method = myType.GetMethods(param, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly).Single(mi => mi.ReturnType == typeof(DataSet));
var subject = Activator.CreateInstance(myType);
var result = method.Invoke(subject, arr);
DataSet ds = (DataSet)result;
。
ただし、意図したとおりに動作しないようです。
ライン
var method = myType.GetMethods (param, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly) .Single(mi => mi.ReturnType == typeof(DataSet));
エラー
Unkown method GetMethods(string, System.Reflection.BindingFlags) of System.Type
そして
mi => mi.ReturnType == typeof(DataSet));
はこのエラーを例外例外:
Unkown type of variable mi
誰でも私の正しい初期化私を助けることができる方法変数。私は、Googleを見回して、少なくとも正しい方向に私を向ける何かを見つけることができるかどうかを見てきました。私の前のコード(再度、other questionを参照してください)をコンパイルして実行しましたが、のあいまいな一致が見つかりましたエラー。
EDIT:
はより以下の回答のようになり、私のコードを変更しました。私はエラーを取得していますが、それをデバッグ中:
この回線で起こっているtargetparametercountexception parameter count mismatch
:あなたはパラメータの配列を渡すべきであるようにそれはそうオンライン反射について読んでから
var result = method.Invoke(subject, arr);
こと呼び出すメソッドが必要です(私の場合は配列です)。私はこれを使用して別のクラスでは(絶対に正常に動作します。私は、まったく同じ方法を起動しようとしています):
DataSet ds = jdc.FETCHvw_WorksiteEntry("", conStr, "");
EDIT1の終わり。
コード?現時点ではあなたのサンプルのどこにも表示されていません –
リフレクションを通して呼び出そうとしているメソッドを表示できますか? – user3185569
2つの引数https:// msdnを受け取るType.GetMethodsのオーバーロードが見つかりません。 microsoft.com/en-us/library/4d848zkb(v=vs.110).aspx – m1o2