當前位置: 首頁>>代碼示例>>C#>>正文


C# CompositionContainer.GetExportedValueOrDefault方法代碼示例

本文整理匯總了C#中System.ComponentModel.Composition.Hosting.CompositionContainer.GetExportedValueOrDefault方法的典型用法代碼示例。如果您正苦於以下問題:C# CompositionContainer.GetExportedValueOrDefault方法的具體用法?C# CompositionContainer.GetExportedValueOrDefault怎麽用?C# CompositionContainer.GetExportedValueOrDefault使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在System.ComponentModel.Composition.Hosting.CompositionContainer的用法示例。


在下文中一共展示了CompositionContainer.GetExportedValueOrDefault方法的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: ComposeConnectionFactory

		private static void ComposeConnectionFactory()
		{
			try
			{
				using (var catalog = new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory))
				using (var container = new CompositionContainer(catalog))
				{
					var export = container.GetExportedValueOrDefault<IConnectionFactory>();
					if (export != null)
					{
						Factory = export;
						Console.WriteLine("Using {0}", Factory.GetType());
					}
				}
			}
			catch (ImportCardinalityMismatchException)
			{
				Console.WriteLine("More than one IConnectionFactory import was found.");
			}
			catch (Exception e)
			{
				Console.WriteLine(e);
			}

			if (Factory == null)
			{
				Factory = new DefaultConnectionFactory();
				Console.WriteLine("Using default connection factory...");
			}
		}
開發者ID:ZixiangBoy,項目名稱:SignalR-1,代碼行數:30,代碼來源:Client.cs

示例2: StartTabPanelViewModel

       public StartTabPanelViewModel(CompositionContainer container)
       {
           timeline = container.GetExportedValueOrDefault<ITimeline>();
           AppState.StartPanelTabItems.CollectionChanged += StartPanelTabItemsCollectionChanged;
 
           AppState.FilteredStartTabItems.CollectionChanged += FilteredStartTabItems_CollectionChanged;
           AppState.ExcludedStartTabItems.CollectionChanged += ExcludedStartTabItems_CollectionChanged;
       }
開發者ID:TNOCS,項目名稱:csTouch,代碼行數:8,代碼來源:StartTabPanelViewModel.cs

示例3: InitializeContainer

        private static void InitializeContainer()
        {
            var assemblyCatalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
            container = new CompositionContainer(assemblyCatalog);

            featureConfig = container.GetExportedValueOrDefault<IFeatureConfiguration>();
            if (featureConfig == null)
            {
                throw new CompositionException("Could not find feature configuration part");
            }
        }
開發者ID:joakes,項目名稱:ExtensibleWebFeatures,代碼行數:11,代碼來源:WebFeatureManager.cs

示例4: GetSplashScreenManager

        /// <summary>
        /// Searches "Application Extensions" for and activates "*SplashScreen*.dll"
        /// </summary>
        /// <returns></returns>
        public static ISplashScreenManager GetSplashScreenManager()
        {
            // This is a specific directory where a splash screen may be located.
            string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Application Extensions");
            if (!Directory.Exists(path))
                return null;

            string file = Directory.EnumerateFiles(path, "*SplashScreen*.dll").FirstOrDefault();
            if (file == null) return null;

            using (AggregateCatalog splashCatalog = new AggregateCatalog())
            {
                splashCatalog.Catalogs.Add(new AssemblyCatalog(file));
                using (CompositionContainer splashBatch = new CompositionContainer(splashCatalog))
                {
                    var splash = splashBatch.GetExportedValueOrDefault<ISplashScreenManager>();
                    if (splash != null)
                        splash.Activate();
                    return splash;
                }
            }
        }
開發者ID:ExRam,項目名稱:DotSpatial-PCL,代碼行數:26,代碼來源:SplashScreenHelper.cs

示例5: GetSplashScreenManager

        /// <summary>
        /// Searches "Application Extensions" for and activates "*SplashScreen*.dll"
        /// </summary>
        /// <returns></returns>
        public static ISplashScreenManager GetSplashScreenManager()
        {
            // This is a specific directory where a splash screen may be located.
            Assembly asm = Assembly.GetEntryAssembly();
            var directories = new List<string> { AppDomain.CurrentDomain.BaseDirectory + "Application Extensions", 
                                                 AppDomain.CurrentDomain.BaseDirectory + "Plugins",
                                                 Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), asm.ManifestModule.Name, "Extensions"),
                                                 AppDomain.CurrentDomain.BaseDirectory + "Extensions"};

            foreach (string directory in directories)
            {
                if (!Directory.Exists(directory))
                    continue;

                string file = Directory.EnumerateFiles(directory, "*SplashScreen*.dll", SearchOption.AllDirectories).FirstOrDefault();
                if (file == null)
                    continue;

                using (AggregateCatalog splashCatalog = new AggregateCatalog())
                {
                    splashCatalog.Catalogs.Add(new AssemblyCatalog(file));

                    using (CompositionContainer splashBatch = new CompositionContainer(splashCatalog))
                    {
                        var splash = splashBatch.GetExportedValueOrDefault<ISplashScreenManager>();

                        if (splash != null)
                            splash.Activate();

                        return splash;
                    }
                }

            }

            return null;
        }
開發者ID:hanchao,項目名稱:DotSpatial,代碼行數:41,代碼來源:SplashScreenHelper.cs

示例6: TryToDiscoverExportWithGenericParameter

        public void TryToDiscoverExportWithGenericParameter()
        {
            var catalog = new TypeCatalog(Assembly.GetExecutingAssembly().GetTypes());
            var container = new CompositionContainer(catalog);

            // Open generic should fail because we should discover that type
            Assert.IsNull(container.GetExportedValueOrDefault<object>(AttributedModelServices.GetContractName(typeof(ExportWithGenericParameter<>))));

            // This specific generic was not exported any where so it should fail
            Assert.IsNull(container.GetExportedValueOrDefault<object>(AttributedModelServices.GetContractName(typeof(ExportWithGenericParameter<double>))));

            // This specific generic was exported so it should succeed
            Assert.IsNotNull(container.GetExportedValueOrDefault<object>(AttributedModelServices.GetContractName(typeof(ExportWithGenericParameter<int>))));

            // Shouldn't discovoer static type with open generic
            Assert.IsNull(container.GetExportedValueOrDefault<object>(AttributedModelServices.GetContractName(typeof(StaticExportWithGenericParameter<>))));

            // Should find a type that inherits from an export
            Assert.IsNotNull(container.GetExportedValueOrDefault<object>(AttributedModelServices.GetContractName(typeof(ExportWhichInheritsFromGeneric))));

            // This should be exported because it is inherited by ExportWhichInheritsFromGeneric
            Assert.IsNotNull(container.GetExportedValueOrDefault<object>(AttributedModelServices.GetContractName(typeof(ExportWithGenericParameter<string>))));
        }
開發者ID:nlhepler,項目名稱:mono,代碼行數:23,代碼來源:TypeCatalogTests.cs

示例7: GetTypeDescriptorServicesForContainer

 public static TypeDescriptorServices GetTypeDescriptorServicesForContainer(CompositionContainer container)
 {
     if (container != null)
     {
         var result = container.GetExportedValueOrDefault<TypeDescriptorServices>();
         if (result == null)
         {
             var v = new TypeDescriptorServices();
             CompositionBatch batch = new CompositionBatch();
             batch.AddPart(v);
             container.Compose(batch);
             return v;
         }
         
         return result;
     }
     return null;
 }
開發者ID:nlhepler,項目名稱:mono,代碼行數:18,代碼來源:DynamicMetadata.cs

示例8: Disposing_catalog_should_dispose_parts_implementing_dispose_pattern

        public void Disposing_catalog_should_dispose_parts_implementing_dispose_pattern()
        {
            var innerCatalog = new TypeCatalog(typeof(DisposablePart));
            var cfg = new InterceptionConfiguration();
            var catalog = new InterceptingCatalog(innerCatalog, cfg);
            container = new CompositionContainer(catalog);

            var part = container.GetExportedValueOrDefault<DisposablePart>();
            Assert.That(part.IsDisposed, Is.False);
            container.Dispose();
            Assert.That(part.IsDisposed, Is.True);
        }
開發者ID:damonrpayne,項目名稱:MefContrib,代碼行數:12,代碼來源:InterceptingCatalogTests.cs

示例9: ShellViewModel

        public ShellViewModel(CompositionContainer container)
        {
            // load visuals
            this.container = container;
            plugins = container.GetExportedValue<IPlugins>();
            popups = container.GetExportedValue<IPopups>();
            floating = container.GetExportedValueOrDefault<IFloating>();
            AppState.Container = this.container;
            AppState.FullScreenFloatingElementChanged += (e, s) => NotifyOfPropertyChange(() => FullScreen);
            
            // load module
            AppState.State = AppStates.Starting;

            //Load configuration
            AppState.Config.LoadOfflineConfig();
            AppState.Config.LoadLocalConfig();
            AppState.Config.UpdateValues();
            BackgroundWorker barInvoker = new BackgroundWorker();
            barInvoker.DoWork += delegate
            {
                Thread.Sleep(TimeSpan.FromSeconds(10));
                AppState.ViewDef.CheckOnlineBaseLayerProviders();
            };
            barInvoker.RunWorkerAsync();
            
            
            
            var b = container.GetExportedValues<IModule>();
            module = b.FirstOrDefault();
            if (module == null) return;

            AppState.Config.ApplicationName = module.Name;

            AppState.State = AppStates.AppInitializing;
            AppState.ViewDef.RememberLastPosition = AppState.Config.GetBool("Map.RememberLastPosition", true);

            AppState.MapStarted += (e, f) =>
            {
                AppState.StartFramework(true, true, true, true);

                AppState.ShareContracts.Add(new EmailShareContract());
                AppState.ShareContracts.Add(new QrShareContract());

                var g = AppState.AddDownload("Init", "StartPoint");

                // start framework
                AppState.State = AppStates.FrameworkStarting;
                AddMainMenuItems();

                // set map
                if (AppState.ViewDef.RememberLastPosition)
                {
                    var extent = (AppState.Config.Get("Map.Extent", "-186.09257071294,-101.374056570352,196.09257071294,204.374056570352"));
                    if (!string.IsNullOrEmpty(extent))
                        AppState.ViewDef.MapControl.Extent = (Envelope)new EnvelopeConverter().ConvertFromString(extent);
                }

                // start app
                AppState.State = AppStates.AppStarting;

                // init plugins


                module.StartApp();

                // app ready
                AppState.State = AppStates.AppStarted;
                AppState.Imb.UpdateStatus();
                AppState.FinishDownload(g);

                // Show timeline player (EV: I've tried to turn it on earlier during the startup process, but that didn't work 
                // (most likely, because something wasn't loaded or initialized correctly).
                AppState.TimelineManager.PlayerVisible = AppState.Config.GetBool("Timeline.PlayerVisible", false);
            };
            
            module.InitializeApp();

        }
開發者ID:TNOCS,項目名稱:csTouch,代碼行數:78,代碼來源:ShellViewModel.cs


注:本文中的System.ComponentModel.Composition.Hosting.CompositionContainer.GetExportedValueOrDefault方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。