4

私はいくつかのLinq式を作成していて、IEnumerable.DefaultIfEmptyhttp://msdn.microsoft.com/en-us/library/bb360179.aspx)のMethodInfoを取得しようとしています。簡単な作業のように見えましたが、なぜそれが機能しないのかわかりません。

typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>) });

typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>).MakeGenericType(typeof(WorkitemListModel)) });
4

1 に答える 1

5

正直なところ、ジェネリックメソッドを取得するのは面倒です。私は使用するよりも良い方法を知りません:

var method = typeof(Enumerable).GetMethods()
                               .Where(m => m.Name == "DefaultIfEmpty")
                               .Where(m => m.GetParameters().Length == 1)
                               .Single();

を呼び出すGetMethodには、パラメーターの正しいジェネリック型パラメーターを含む、正確に正しいパラメーター型が必要です。一度それを手に入れたらそれを行うことができますが、それまでは上記が利用可能なすべてだと思います:(

于 2011-06-17T09:51:21.360 に答える