سؤال

أنا بناء بعض التعبير لينق ومحاولة الحصول على عقد من ميثودينفو ل IEnumerable.DefaultIfEmpty (http://msdn.microsoft.com/en-us/library/bb360179.aspx).ما بدا أنه مهمة سهلة ولكني جاهل لماذا لا يعمل.

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

typeof(Enumerable).GetMethod("DefaultIfEmpty", new[] { typeof(IEnumerable<>).MakeGenericType(typeof(WorkitemListModel)) });
هل كانت مفيدة؟

المحلول

الحصول على طرق عامة هو الألم ، أن نكون صادقين.لا أعرف طريقة أفضل من الاستخدام:

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

للاتصال GetMethod, ، يجب أن يكون لديك نوع المعلمة الصحيح بالضبط ، بما في ذلك معلمة النوع العام الصحيحة للمعلمة.مرة واحدة كنت قد حصلت على ذلك مرة واحدة يمكنك القيام بذلك ، ولكن حتى ذلك الحين أعتقد أن ما سبق هو كل ما هو متاح :(

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top