/// <summary> /// Initializes <see cref="AssemblySourceCache"/>. /// </summary> /// <param name="assemblies">List of assemblies to cache.</param> protected virtual void InitializeAssemblySource(IEnumerable <Assembly> assemblies) { AssemblySourceCache.Install(); AssemblySourceCache.ExtractTypes = assembly => { var types = assembly.GetExportedTypes().Where(IsExtractToAssembliesCache); return(types); }; AssemblySource.Instance.ReplaceRange(assemblies); }
public void AddingTheSameAssemblyMoreThanOneShouldNotThrow() { AssemblySourceCache.Install(); var testAssembly = typeof(AssemblyCacheTests).Assembly; AssemblySource.Instance.Add(testAssembly); //Re-add the same assembly var exception = Record.Exception(() => AssemblySource.Instance.Add(testAssembly)); Assert.Null(exception); }
public void ResettingTheCacheWithMoreThanOneAssemblyShouldNotThrow() { AssemblySourceCache.Install(); var testAssembly = typeof(AssemblyCacheTests).Assembly; AssemblySource.Instance.AddRange(new[] { testAssembly, testAssembly }); //Refresh clears and re-creates the cache var exception = Record.Exception(() => AssemblySource.Instance.Refresh()); Assert.Null(exception); }
protected virtual void StartRuntime() { EventAggregator.HandlerResultProcessing = (target, result) => { var task = result as System.Threading.Tasks.Task; if (task != null) { result = new IResult[] { task.AsResult() }; } var coroutine = result as IEnumerable <IResult>; if (coroutine != null) { var viewAware = target as IViewAware; var view = viewAware != null?viewAware.GetView() : null; var context = new CoroutineExecutionContext { Target = target, View = view }; Coroutine.BeginExecute(coroutine.GetEnumerator(), context); } }; AssemblySourceCache.Install(); foreach (var ambly in SelectAssemblies()) { try { //过滤掉win32非托管dll string[] errors = new string[] { "CSkin", "Em.MCIFrameWork", "Itenso" }; if (errors.FirstOrDefault(x => ambly.FullName.Contains(x)) == null) { AssemblySource.Instance.Add(ambly); } } catch { } } ; if (useApplication) { Application = Application.Current; PrepareApplication(); } Configure(); IoC.GetInstance = GetInstance; IoC.GetAllInstances = GetAllInstances; IoC.BuildUp = BuildUp; }
private void InitializeCaliburn() { PlatformProvider.Current = new XamlPlatformProvider(); var baseExtractTypes = AssemblySourceCache.ExtractTypes; AssemblySourceCache.ExtractTypes = assembly => { var baseTypes = baseExtractTypes(assembly); var elementTypes = assembly.GetExportedTypes() .Where(t => typeof(UIElement).IsAssignableFrom(t)); return(baseTypes.Union(elementTypes)); }; AssemblySourceCache.Install(); AssemblySource.Instance.AddRange(SelectAssemblies()); }