本文整理汇总了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...");
}
}
示例2: StartTabPanelViewModel
public StartTabPanelViewModel(CompositionContainer container)
{
timeline = container.GetExportedValueOrDefault<ITimeline>();
AppState.StartPanelTabItems.CollectionChanged += StartPanelTabItemsCollectionChanged;
AppState.FilteredStartTabItems.CollectionChanged += FilteredStartTabItems_CollectionChanged;
AppState.ExcludedStartTabItems.CollectionChanged += ExcludedStartTabItems_CollectionChanged;
}
示例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");
}
}
示例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;
}
}
}
示例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;
}
示例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>))));
}
示例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;
}
示例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);
}
示例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();
}