[monodoc] Update target
[mono.git] / mcs / class / IKVM.Reflection / Assembly.cs
index 715e774bdeb94b38786eea3b79bd016e4c7d5940..5f3a5fa8674a2cce6a6d23ffa7c2362f63b7e0d4 100644 (file)
@@ -26,10 +26,13 @@ using System.Collections.Generic;
 
 namespace IKVM.Reflection
 {
+       public delegate Module ModuleResolveEventHandler(object sender, ResolveEventArgs e);
+
        public abstract class Assembly : ICustomAttributeProvider
        {
                internal readonly Universe universe;
                protected string fullName;      // AssemblyBuilder needs access to this field to clear it when the name changes
+               protected List<ModuleResolveEventHandler> resolvers;
 
                internal Assembly(Universe universe)
                {
@@ -41,6 +44,22 @@ namespace IKVM.Reflection
                        return FullName;
                }
 
+               public event ModuleResolveEventHandler ModuleResolve
+               {
+                       add
+                       {
+                               if (resolvers == null)
+                               {
+                                       resolvers = new List<ModuleResolveEventHandler>();
+                               }
+                               resolvers.Add(value);
+                       }
+                       remove
+                       {
+                               resolvers.Remove(value);
+                       }
+               }
+
                public abstract Type[] GetTypes();
                public abstract AssemblyName GetName();
                public abstract string ImageRuntimeVersion { get; }
@@ -76,6 +95,11 @@ namespace IKVM.Reflection
                        return GetModules(true);
                }
 
+               public IEnumerable<Module> Modules
+               {
+                       get { return GetLoadedModules(); }
+               }
+
                public Module[] GetLoadedModules()
                {
                        return GetLoadedModules(true);
@@ -104,6 +128,25 @@ namespace IKVM.Reflection
                        return list.ToArray();
                }
 
+               public IEnumerable<Type> ExportedTypes
+               {
+                       get { return GetExportedTypes(); }
+               }
+
+               public IEnumerable<TypeInfo> DefinedTypes
+               {
+                       get
+                       {
+                               Type[] types = GetTypes();
+                               TypeInfo[] typeInfos = new TypeInfo[types.Length];
+                               for (int i = 0; i < types.Length; i++)
+                               {
+                                       typeInfos[i] = types[i].GetTypeInfo();
+                               }
+                               return typeInfos;
+                       }
+               }
+
                public Type GetType(string name)
                {
                        return GetType(name, false);
@@ -163,6 +206,16 @@ namespace IKVM.Reflection
                        return CustomAttributeData.__GetCustomAttributes(this, attributeType, inherit);
                }
 
+               public IList<CustomAttributeData> GetCustomAttributesData()
+               {
+                       return CustomAttributeData.GetCustomAttributes(this);
+               }
+
+               public IEnumerable<CustomAttributeData> CustomAttributes
+               {
+                       get { return GetCustomAttributesData(); }
+               }
+
                public static string CreateQualifiedName(string assemblyName, string typeName)
                {
                        return typeName + ", " + assemblyName;
@@ -186,14 +239,24 @@ namespace IKVM.Reflection
                        }
                }
 
+               public virtual bool IsDynamic
+               {
+                       get { return false; }
+               }
+
                public virtual bool __IsMissing
                {
                        get { return false; }
                }
 
-               public virtual AssemblyNameFlags __AssemblyFlags
+               public AssemblyNameFlags __AssemblyFlags
+               {
+                       get { return GetAssemblyFlags(); }
+               }
+
+               protected virtual AssemblyNameFlags GetAssemblyFlags()
                {
-                       get { return GetName().Flags; }
+                       return GetName().Flags;
                }
 
                internal abstract IList<CustomAttributeData> GetCustomAttributesData(Type attributeType);