コード例 #1
0
        public void AssemblyLoadedEventArgsConstructorTests()
        {
            var assemblyMock = Assembly.GetExecutingAssembly();
            AssemblyLoadedEventArgs eventArgs = new AssemblyLoadedEventArgs(assemblyMock);

            Assert.AreEqual(assemblyMock, eventArgs.Assembly);
        }
コード例 #2
0
 /// <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;
     }
 }
コード例 #3
0
        /// <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);
                    }
                }
            }
        }
コード例 #4
0
ファイル: PythonBinder.cs プロジェクト: octavioh/ironruby
        /// <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);

        }
コード例 #5
0
 /// <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();
 }
コード例 #6
0
ファイル: IoCFactory.cs プロジェクト: Catel/Catel
 /// <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;
     }
 }
コード例 #7
0
ファイル: MainForm.cs プロジェクト: WajdiCharfi/METAbolt
        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);
        }
コード例 #8
0
ファイル: TypeFactory.cs プロジェクト: justdude/DbExport
 /// <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();
 }
コード例 #9
0
 /// <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);
 }
コード例 #10
0
 private void AssemblyManager_AssemblyLoaded(object sender, AssemblyLoadedEventArgs args)
 {
     AppendRootNode(args.Assembly);
 }
コード例 #11
0
 private void OnAssemblyLoaded(object sender, AssemblyLoadedEventArgs args)
 {
     LoadAssembly(args.Assembly);
 }