码迷,mamicode.com
首页 > Windows程序 > 详细

C# 通过放射获取扩展方法

时间:2015-09-06 17:40:39      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

注意,扩展方法本质上是静态方法,所以拿到MethodInfo时,应该这么调用 methodInfo.Invoke(null, new object[]{params})

 

 1 static IEnumerable<MethodInfo> GetExtensionMethods(Assembly assembly, Type extendedType)
 2         {
 3             var query = from type in assembly.GetTypes()
 4                         where !type.IsGenericType && !type.IsNested
 5                         from method in type.GetMethods(BindingFlags.Static
 6                             | BindingFlags.Public | BindingFlags.NonPublic)
 7                         where method.IsDefined(typeof(System.Runtime.CompilerServices.ExtensionAttribute), false)
 8                         where method.GetParameters()[0].ParameterType == extendedType
 9                         select method;
10             return query;
11         }

 

C# 通过放射获取扩展方法

标签:

原文地址:http://www.cnblogs.com/zhangjunjun203/p/4786342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!