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); }