Beispiel #1
0
        private static Assembly FindAssembly(string resourceTypeName)
        {
            if (asmcaches.ContainsKey(resourceTypeName))
            {
                return(asmcaches[resourceTypeName]);
            }

            Assembly assembly = null;

            lock (asmcaches)
            {
                if (asmcaches.ContainsKey(resourceTypeName))
                {
                    return(asmcaches[resourceTypeName]);
                }

                ITypeFinder typefinder = ServiceLocator.Instance.Resolve <ITypeFinder>();
                if (typefinder != null)
                {
                    assembly = typefinder.FindAssembly(resourceTypeName);
                }
                else
                {
                    foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
                    {
                        if (asm.FullName == resourceTypeName || asm.GetName().Name == resourceTypeName)
                        {
                            assembly = asm;
                            break;
                        }
                    }

                    assembly = Assembly.Load(resourceTypeName);
                }

                if (assembly != null)
                {
                    asmcaches[resourceTypeName] = assembly;
                }
            }

            return(assembly);
        }