2013-05-28 3 views
5

私は2つの機能を持っています方法:Type.GetMethodは、すべてのメソッドをループせずにジェネリックMETHODINFOを取得

MethodInfo method = typeof(DAL).GetMethod("DeleteRecord", new[] { typeof(int) }); 
MethodInfo generic = method.MakeGenericMethod(returnType); 
object o = generic.Invoke(null, new object[] { dbname, spname, expandoAsDictionary }); 

最初の行tあいまいな定義があるため例外が発生します。 GetMethodsを使用せずに汎用メソッドのMethodInfoを取得し、結果をループする方法がありますか?IsGenericMethod

編集: 両方の提案された回答がこれを内部ループ(GetMethods()... Select ...)で解決するか、過負荷に対処しないため、「重複」を削除してください。

+0

これは重複していません。私はすでに反射でジェネリックメソッドを呼び出す方法を知っていますが、あいまいな定義の例外があります。私の質問を読んでください。 –

+0

それは重複していますが、間違った質問にリンクしました。申し訳ありませんが、正しいものがここにあります:http://stackoverflow.com/q/5218395/201088 –

+1

まだdup!私は明示的にGetMethods()関数を使用せずにそれを行う方法を尋ねました。あなたのリンクにマークされている答えは、それを使用しています... –

答えて

0
たぶん

なく、あなたの問題の厳密解が、多分あなたは、このソリューションで幸せになることができます:私はそうGetMethod()を持つcalles可能性があり、メソッドのための「フルネーム」のような存在だろうと思っ

var generic = typeof(BadFoo).GetMethods().FirstOrDefault(p => p.IsStatic == true && p.Name == "DeleteRecord" && p.ReturnType == typeof(Int32)); 

一意のメソッドを取得するためのFullName。しかし、メソッドには名前以外のプロパティはありません。

+0

私の質問を読んでください。私はGetMethods()を使わずにこれを行う方法を尋ねました:) –

+0

私が言ったように、これは正確な解決策ではありません。しかし、少なくともあなたは "結果をループ"することはありません –

+0

あなたの答えをありがとう、私はそれを使用することを検討します...私はあなたのソリューションはまだ高いレベルでメソッドを区別する方法を探していますシーンの背後にあるループ(FirstOrDefault) –

関連する問題