expose events from AppDomain via AssemblyLoadContext
authorRahul Kumar <rahku@microsoft.com>
Thu, 27 Oct 2016 01:14:39 +0000 (18:14 -0700)
committerRahul Kumar <rahku@microsoft.com>
Thu, 27 Oct 2016 18:10:34 +0000 (11:10 -0700)
Commit migrated from https://github.com/dotnet/coreclr/commit/35aedcbaa560481d729f3582fb9d42804a43e359

src/coreclr/src/mscorlib/model.xml
src/coreclr/src/mscorlib/ref/mscorlib.cs
src/coreclr/src/mscorlib/src/System/Runtime/Loader/AssemblyLoadContext.cs

index 130702e..30563da 100644 (file)
       <Member Name="get_Default" />
       <Member Name="SetProfileOptimizationRoot(System.String)" />
       <Member Name="StartProfileOptimization(System.String)" />
+      <Member MemberType="Event" Name="AssemblyLoad" />
       <Member MemberType="Event" Name="Resolving" />
+      <Member MemberType="Event" Name="ResourceResolve" />
+      <Member MemberType="Event" Name="TypeResolve" />
       <Member MemberType="Event" Name="Unloading" />
     </Type>
     <Type Name="System.Runtime.MemoryFailPoint">
index 27b0d30..f84ee4b 100644 (file)
@@ -11966,6 +11966,9 @@ namespace System.Runtime.Loader
         public static System.Runtime.Loader.AssemblyLoadContext Default { get { throw null; } }
         public event System.Func<System.Runtime.Loader.AssemblyLoadContext, System.Reflection.AssemblyName, System.Reflection.Assembly> Resolving { add { } remove { } }
         public event System.Action<System.Runtime.Loader.AssemblyLoadContext> Unloading { add { } remove { } }
+        public static event AssemblyLoadEventHandler AssemblyLoad { add { } remove { } }
+        public static event ResolveEventHandler TypeResolve { add { } remove { } }
+        public static event ResolveEventHandler ResourceResolve { add { } remove { } }
         public static System.Reflection.AssemblyName GetAssemblyName(string assemblyPath) { throw null; }
         public static System.Runtime.Loader.AssemblyLoadContext GetLoadContext(System.Reflection.Assembly assembly) { throw null; }
         public static System.Reflection.Assembly[] GetLoadedAssemblies() { throw null; }
index ab8f4e8..2c07325 100644 (file)
@@ -470,6 +470,27 @@ namespace System.Runtime.Loader
 
         // Synchronization primitive for controlling initialization of Default load context
         private static readonly object s_initLock = new Object();
+
+        // Occurs when an Assembly is loaded
+        public static event AssemblyLoadEventHandler AssemblyLoad 
+        { 
+            add { AppDomain.CurrentDomain.AssemblyLoad += value; } 
+            remove { AppDomain.CurrentDomain.AssemblyLoad -= value; } 
+        }
+
+        // Occurs when resolution of type fails
+        public static event ResolveEventHandler TypeResolve 
+        { 
+            add { AppDomain.CurrentDomain.TypeResolve += value; } 
+            remove { AppDomain.CurrentDomain.TypeResolve -= value; } 
+        }
+
+        // Occurs when resolution of resource fails
+        public static event ResolveEventHandler ResourceResolve 
+        { 
+            add { AppDomain.CurrentDomain.ResourceResolve += value; } 
+            remove { AppDomain.CurrentDomain.ResourceResolve -= value; } 
+        } 
     }
 
     [System.Security.SecuritySafeCritical]