3 // Sean MacIsaac (macisaac@ximian.com)
5 // (C) 2001 Ximian, Inc.
7 using System.Reflection;
8 using System.Runtime.CompilerServices;
12 internal struct MonoTypeInfo {
14 public string name_space;
17 public Type[] interfaces;
18 public Assembly assembly;
21 internal class MonoType : Type
24 [MethodImplAttribute(MethodImplOptions.InternalCall)]
25 private static extern void type_from_obj (MonoType type, Object obj);
27 [MethodImplAttribute(MethodImplOptions.InternalCall)]
28 private static extern void get_type_info (RuntimeTypeHandle type, out MonoTypeInfo info);
30 internal MonoType (Object obj) {
31 type_from_obj (this, obj);
34 public override Type[] GetInterfaces()
37 get_type_info (_impl, out info);
38 return info.interfaces;
41 public override Type GetElementType()
44 get_type_info (_impl, out info);
48 public override Type UnderlyingSystemType {
51 get_type_info (_impl, out info);
56 public override Assembly Assembly {
59 get_type_info (_impl, out info);
64 public override string AssemblyQualifiedName {
66 return assQualifiedName ();
70 [MethodImplAttribute(MethodImplOptions.InternalCall)]
71 private extern string assQualifiedName();
73 public override Type BaseType {
76 get_type_info (_impl, out info);
81 public override string FullName {
83 string str = assQualifiedName ();
84 return str.Split(',')[0];
88 public override bool IsDefined (Type attributeType, bool inherit)
93 public override object[] GetCustomAttributes (bool inherit)
98 public override object[] GetCustomAttributes (Type attributeType, bool inherit)
103 public override MemberTypes MemberType {
105 return MemberTypes.All;
109 public override string Name {
112 get_type_info (_impl, out info);
117 public override string Namespace {
120 get_type_info (_impl, out info);
121 return info.name_space;
125 public override Module Module {
131 public override Type ReflectedType {
137 public override RuntimeTypeHandle TypeHandle {