/// <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;
        }
示例#5
0
        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());
        }