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)
{
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; }
return GetModules(true);
}
+ public IEnumerable<Module> Modules
+ {
+ get { return GetLoadedModules(); }
+ }
+
public Module[] GetLoadedModules()
{
return GetLoadedModules(true);
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);
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;
}
}
+ 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);