public string name_space;
public Type parent;
public Type etype;
+ public Type nested_in;
public Assembly assembly;
public TypeAttributes attrs;
public int rank;
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern override EventInfo[] GetEvents (BindingFlags bindingAttr);
- public override FieldInfo GetField (string name, BindingFlags bindingAttr)
- {
- // FIXME
- throw new NotImplementedException ();
- }
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ public extern override FieldInfo GetField (string name, BindingFlags bindingAttr);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
- [MonoTODO]
public extern override FieldInfo[] GetFields (BindingFlags bindingAttr);
public override Type GetInterface (string name, bool ignoreCase)
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern override MethodInfo[] GetMethods (BindingFlags bindingAttr);
+ [MethodImplAttribute(MethodImplOptions.InternalCall)]
+ private static extern MethodInfo get_method (Type type, string name, Type[] types);
+
+
+ [MonoTODO]
protected override MethodInfo GetMethodImpl (string name, BindingFlags bindingAttr,
Binder binder,
CallingConventions callConvention,
Type[] types, ParameterModifier[] modifiers)
{
- // FIXME
- throw new NotImplementedException ();
+ return get_method (this, name, types);
}
public override Type GetNestedType( string name, BindingFlags bindingAttr)
continue;
if (types.Length > 0) {
- if (info.GetIndexParameters().Length != types.Length)
+ ParameterInfo[] parameterInfo = info.GetIndexParameters ();
+
+ if (parameterInfo.Length != types.Length)
+ continue;
+
+ int i;
+ bool match = true;
+
+ for (i = 0; i < types.Length; i ++)
+ if (parameterInfo [i].ParameterType != types [i]) {
+ match = false;
+ break;
+ }
+
+ if (!match)
continue;
-
- // fixme: compare parameters
}
if (null != ret)
protected override bool IsArrayImpl ()
{
- return type_is_subtype_of (this, typeof (System.Array), false);
+ return type_is_subtype_of (this, typeof (System.Array), false) && this != typeof (System.Array);
}
protected override bool IsByRefImpl ()
public override string AssemblyQualifiedName {
get {
- return getFullName () + "," + Assembly.ToString ();
+ return getFullName () + ", " + Assembly.ToString ();
}
}
}
}
+ public override Type DeclaringType {
+ get {
+ MonoTypeInfo info;
+ get_type_info (_impl, out info);
+ return info.nested_in;
+ }
+ }
+
public override Type ReflectedType {
get {
- return null;
+ MonoTypeInfo info;
+ get_type_info (_impl, out info);
+ return info.nested_in;
}
}