24using System.Collections.Generic;
29 internal abstract class TypeInfo :
Type, IReflectableType
33 const BindingFlags Flags = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
47 internal TypeInfo(
Type underlyingType) :
57 internal TypeInfo(
byte sigElementType) :
63 public IEnumerable<ConstructorInfo> DeclaredConstructors
65 get {
return GetConstructors(Flags); }
68 public IEnumerable<EventInfo> DeclaredEvents
70 get {
return GetEvents(Flags); }
73 public IEnumerable<FieldInfo> DeclaredFields
75 get {
return GetFields(Flags); }
78 public IEnumerable<MemberInfo> DeclaredMembers
80 get {
return GetMembers(Flags); }
83 public IEnumerable<MethodInfo> DeclaredMethods
85 get {
return GetMethods(Flags); }
88 public IEnumerable<TypeInfo> DeclaredNestedTypes
92 var types = GetNestedTypes(Flags);
93 var typeInfos =
new TypeInfo[types.Length];
94 for (
int i = 0; i < types.Length; i++)
95 typeInfos[i] = types[i].GetTypeInfo();
101 public IEnumerable<PropertyInfo> DeclaredProperties
103 get {
return GetProperties(Flags); }
106 public Type[] GenericTypeParameters
108 get {
return IsGenericTypeDefinition ? GetGenericArguments() :
Type.EmptyTypes; }
111 public IEnumerable<Type> ImplementedInterfaces
113 get {
return __GetDeclaredInterfaces(); }
121 public EventInfo GetDeclaredEvent(
string name)
123 return GetEvent(name, Flags);
126 public FieldInfo GetDeclaredField(
string name)
128 return GetField(name, Flags);
131 public MethodInfo GetDeclaredMethod(
string name)
133 return GetMethod(name, Flags);
136 public IEnumerable<MethodInfo> GetDeclaredMethods(
string name)
138 var methods =
new List<MethodInfo>();
139 foreach (var method
in GetMethods(Flags))
140 if (method.Name == name)
146 public TypeInfo GetDeclaredNestedType(
string name)
148 return GetNestedType(name, Flags).GetTypeInfo();
153 return GetProperty(name, Flags);
156 public bool IsAssignableFrom(TypeInfo typeInfo)
158 return base.IsAssignableFrom(typeInfo);
IKVM.Reflection.Type Type
IKVM.Reflection.EventInfo EventInfo
IKVM.Reflection.FieldInfo FieldInfo
IKVM.Reflection.PropertyInfo PropertyInfo
IKVM.Reflection.MethodInfo MethodInfo