public void DoMethodThings() { Type[] targetTypes = new[] { typeof(int), typeof(System.IO.File), typeof(System.Diagnostics.Activity) }; // raw foreach (Type type in targetTypes) { var result = type.GetMethods(BindingFlags.Public | BindingFlags.Instance); } // cached foreach (Type type in targetTypes) { var result = TypeInfoHolderHelper.GetMethods(type, (m) => m.IsPublic && m.IsStatic == false); } }
public void Caching() { IReadOnlyList <MethodInfo> result = null; Action <MethodInfo> action = Foo; Func <MethodInfo, bool> methodFilter = m => m.IsPublic || m.IsPrivate; for (int i = 0; i < N; ++i) { foreach (Type type in TargetTypes()) { TypeInfoHolderHelper.GetMethods(type, methodFilter); if (result != null) { foreach (MethodInfo methodInfo in result) { action(methodInfo); } } } } }