public void AssemblyLoadedEventArgsConstructorTests() { var assemblyMock = Assembly.GetExecutingAssembly(); AssemblyLoadedEventArgs eventArgs = new AssemblyLoadedEventArgs(assemblyMock); Assert.AreEqual(assemblyMock, eventArgs.Assembly); }
/// <summary> /// Called when an assembly gets loaded. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="AssemblyLoadedEventArgs"/> instance containing the event data.</param> private static void OnAssemblyLoaded(object sender, AssemblyLoadedEventArgs e) { lock (_lockObject) { _serviceLocatorInitializers = null; } }
/// <summary> /// Event handler for when our domain manager has an assembly loaded by the user hosting the script /// runtime. Here we can gather any information regarding extension methods. /// /// Currently DLR-style extension methods become immediately available w/o an explicit import step. /// </summary> private void DomainManager_AssemblyLoaded(object sender, AssemblyLoadedEventArgs e) { var assembly = e.Assembly; var extensions = ( from type in assembly.GetTypes() let extendedTypes = (from method in type.GetMethods(BindingFlags.Static | BindingFlags.Public) where method.IsDefined(typeof(ExtensionAttribute), false) let parameters = method.GetParameters() where parameters.Length != 0 let parameterType = parameters[0].ParameterType select Tuple.Create( parameterType.IsGenericType ? parameterType.GetGenericTypeDefinition() : parameterType, type)).Distinct() from extendedType in extendedTypes select new { ExtendedType = extendedType.Item1, ExtendingType = extendedType.Item2 } ).ToList(); lock (_extensionTypes) { foreach (var extension in extensions) { if (extension.ExtendedType.IsInterface) { _registeredInterfaceExtensions = true; } IList <Type> typeList; if (!_extensionTypes.TryGetValue(extension.ExtendedType, out typeList)) { _extensionTypes[extension.ExtendedType] = typeList = new List <Type>(); } else if (typeList.IsReadOnly) { _extensionTypes[extension.ExtendedType] = typeList = new List <Type>(typeList); } if (!typeList.Contains(extension.ExtendingType)) { typeList.Add(extension.ExtendingType); } } } }
/// <summary> /// Event handler for when our domain manager has an assembly loaded by the user hosting the script /// runtime. Here we can gather any information regarding extension methods. /// /// Currently DLR-style extension methods become immediately available w/o an explicit import step. /// </summary> private void DomainManager_AssemblyLoaded(object sender, AssemblyLoadedEventArgs e) { Assembly asm = e.Assembly; ExtensionTypeAttribute[] attrs = (ExtensionTypeAttribute[])asm.GetCustomAttributes(typeof(ExtensionTypeAttribute), true); if (attrs.Length > 0) { lock (_dlrExtensionTypes) { foreach (ExtensionTypeAttribute attr in attrs) { IList<Type> typeList; if (!_dlrExtensionTypes.TryGetValue(attr.Extends, out typeList)) { _dlrExtensionTypes[attr.Extends] = typeList = new List<Type>(); } else if (typeList.IsReadOnly) { _dlrExtensionTypes[attr.Extends] = typeList = new List<Type>(typeList); } // don't add extension types twice even if we receive multiple assembly loads if (!typeList.Contains(attr.ExtensionType)) { typeList.Add(attr.ExtensionType); } } } } TopNamespaceTracker.PublishComTypes(asm); // Add it to the references tuple if we // loaded a new assembly. ClrModule.ReferencesList rl = _context.ReferencedAssemblies; lock (rl) { rl.Add(asm); } // load any compiled code that has been cached... LoadScriptCode(_context, asm); // load any Python modules _context.LoadBuiltins(_context.Builtins, asm); }
/// <summary> /// Called when the <see cref="TypeCache.AssemblyLoaded"/> event occurs. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="AssemblyLoadedEventArgs"/> instance containing the event data.</param> private void OnAssemblyLoaded(object sender, AssemblyLoadedEventArgs e) { ClearCache(); }
void manager_AssemblyLoaded(object sender, AssemblyLoadedEventArgs e) { string file = (new System.IO.FileInfo(e.Filename)).Name.Trim(); string ev = "Loaded plugin: " + file; Logger.Log(ev, Helpers.LogLevel.Info); }
/// <summary> /// Called when an assembly is loaded in the <see cref="TypeCache"/>. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="AssemblyLoadedEventArgs" /> instance containing the event data.</param> private void OnTypeCacheAssemblyLoaded(object sender, AssemblyLoadedEventArgs args) { LoadServiceFromAssembly(args.Assembly); }
private void AssemblyManager_AssemblyLoaded(object sender, AssemblyLoadedEventArgs args) { AppendRootNode(args.Assembly); }
private void OnAssemblyLoaded(object sender, AssemblyLoadedEventArgs args) { LoadAssembly(args.Assembly); }