public void UpdateMembers(MemberOptions options) { ResetMembers(_events); ResetMembers(_fields); ResetMembers(_methods); ResetMembers(_properties); IEnumerable <MemberViewModel> members = new MemberViewModel[0]; if (options.ShowFields) { members = members.Concat(_fields); } if (options.ShowProperties) { members = members.Concat(_properties); } if (options.ShowEvents) { members = members.Concat(_events); } if (options.ShowMethods) { members = members.Concat(_methods); } if (!options.ShowPrivate) { members = members.Where(m => !m.IsPrivate); } if (!options.ShowInternal) { members = members.Where(m => !m.IsInternal); } if (!options.ShowProtected) { members = members.Where(m => !m.IsProtected); } if (!options.ShowProtectedInternal) { members = members.Where(m => !m.IsProtectedInternal); } if (!options.ShowPublic) { members = members.Where(m => !m.IsPublic); } if (!string.IsNullOrWhiteSpace(options.SearchTerm)) { members = members.Where( m => m.MemberInfo.Name.IndexOf(options.SearchTerm.Trim(), StringComparison.InvariantCultureIgnoreCase) >= 0); } if (options.MemberKind == MemberKind.Virtual) { members = members.OfType <ICanBeVirtual>().Where(m => m.IsVirtual).OfType <MemberViewModel>(); foreach (var member in members) { var maybeVirtualMember = member as ICanBeVirtual; if (maybeVirtualMember.IsOverride) { member.IsMarked = true; } } } Members = members.ToArray(); }