Browse Source

Actually make use of the member name hashtable

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5118 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 16 years ago
parent
commit
9c769a48ce
  1. 17
      src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Metadata/DebugType.cs

17
src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Metadata/DebugType.cs

@ -283,17 +283,22 @@ namespace Debugger.MetaData @@ -283,17 +283,22 @@ namespace Debugger.MetaData
if ((bindingFlags & (BindingFlags.Instance | BindingFlags.Static)) == 0)
throw new ArgumentException("Instance or Static flag must be included", "bindingFlags");
// Filter by name
IEnumerable<List<MemberInfo>> searchScope;
if (name != null) {
if (!membersByName.ContainsKey(name))
return new T[] {};
searchScope = new List<MemberInfo>[] { membersByName[name] };
} else {
searchScope = membersByName.Values;
}
List<T> results = new List<T>();
foreach(List<MemberInfo> memberInfos in membersByName.Values) {
foreach(List<MemberInfo> memberInfos in searchScope) {
foreach(MemberInfo memberInfo in memberInfos) {
// Filter by type
if (!(memberInfo is T)) continue; // Reject item
// Filter by name
if (name != null) {
if (memberInfo.Name != name) continue; // Reject item
}
// Filter by access
if (((IDebugMemberInfo)memberInfo).IsPublic) {
if ((bindingFlags & BindingFlags.Public) == 0) continue; // Reject item

Loading…
Cancel
Save