dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] CVS: pnetlib/runtime/System Type.cs,1.13,1.14


From: Gopal.V <address@hidden>
Subject: [Dotgnu-pnet-commits] CVS: pnetlib/runtime/System Type.cs,1.13,1.14
Date: Fri, 14 Feb 2003 13:39:07 -0500

Update of /cvsroot/dotgnu-pnet/pnetlib/runtime/System
In directory subversions:/tmp/cvs-serv2322/runtime/System

Modified Files:
        Type.cs 
Log Message:
implement Type.FindMembers method


Index: Type.cs
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnetlib/runtime/System/Type.cs,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** Type.cs     7 Feb 2003 18:38:00 -0000       1.13
--- Type.cs     14 Feb 2003 18:39:05 -0000      1.14
***************
*** 25,28 ****
--- 25,29 ----
  using System.Reflection;
  using System.Globalization;
+ using System.Collections;
  using System.Runtime.CompilerServices;
  
***************
*** 151,154 ****
--- 152,238 ----
                                return GetMember(attr.MemberName);
                        }
+ 
+ #if !ECMA_COMPAT
+ 
+       /* convenience function wrapping over the other abstract stuff */
+       public virtual MemberInfo[]     FindMembers     (MemberTypes memberType,
+                                                                BindingFlags 
bindingAttr,
+                                                                MemberFilter 
filter,
+                                                                Object 
filterCriteria)
+                       {
+                               ArrayList list=new ArrayList(); 
+                               if((memberType & MemberTypes.Constructor)!=0)
+                               {
+                                       ConstructorInfo[] ctors = 
GetConstructors(bindingAttr);
+                                       foreach(MemberInfo minfo in ctors)
+                                       {
+                                               if(filter==null || 
filter(minfo,filterCriteria))
+                                               {
+                                                       list.Add(minfo);
+                                               }
+                                       }
+                               }
+                               if((memberType & MemberTypes.Event)!=0)
+                               {
+                                       EventInfo[] events = 
GetEvents(bindingAttr);
+                                       foreach(MemberInfo minfo in events)
+                                       {
+                                               if(filter==null || 
filter(minfo,filterCriteria))
+                                               {
+                                                       list.Add(minfo);
+                                               }
+                                       }
+                               }
+                               if((memberType & MemberTypes.Field)!=0)
+                               {
+                                       FieldInfo[] fields = 
GetFields(bindingAttr);
+                                       foreach(MemberInfo minfo in fields)
+                                       {
+                                               if(filter==null || 
filter(minfo,filterCriteria))
+                                               {
+                                                       list.Add(minfo);
+                                               }
+                                       }
+                               }
+                               if((memberType & MemberTypes.Method)!=0)
+                               {
+                                       MethodInfo[] mthds = 
GetMethods(bindingAttr);
+                                       foreach(MemberInfo minfo in mthds)
+                                       {
+                                               if(filter==null || 
filter(minfo,filterCriteria))
+                                               {
+                                                       list.Add(minfo);
+                                               }
+                                       }
+                               }
+                               if((memberType & MemberTypes.Property)!=0)
+                               {
+                                       PropertyInfo[] props= 
GetProperties(bindingAttr);
+                                       foreach(MemberInfo minfo in props)
+                                       {
+                                               if(filter==null || 
filter(minfo,filterCriteria))
+                                               {
+                                                       list.Add(minfo);
+                                               }
+                                       }
+                                       
+                               }
+                               if((memberType & MemberTypes.NestedType)!=0)
+                               {
+                                       Type[] types= 
GetNestedTypes(bindingAttr);
+                                       foreach(MemberInfo minfo in types)
+                                       {
+                                               if(filter==null || 
filter(minfo,filterCriteria))
+                                               {
+                                                       list.Add(minfo);
+                                               }
+                                       }
+                               }
+                               
+                               MemberInfo[] retval=new MemberInfo[list.Count];
+                               list.CopyTo(retval);
+                               return retval;                          
+                       }
+ #endif
  
        // Get the element type for this type.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]