public static PluginHost Create() { var builder = new System.ComponentModel.Composition.Registration.RegistrationBuilder(); // addins builder .ForTypesDerivedFrom<IAddinContract>() //.Export<IAddinContract>() .ExportInterfaces() ; // host builder .ForType<PluginHost>() //.ImportProperty(x => x.Addins, b => b.AsMany()) .Export<PluginHost>() ; var hostCatalog = new System.ComponentModel.Composition.Hosting.AssemblyCatalog(typeof(PluginHost).Assembly, builder); var aCataog = new System.ComponentModel.Composition.Hosting.AggregateCatalog(hostCatalog); #if false var catalog = new System.ComponentModel.Composition.Hosting.DirectoryCatalog("addins"); aCataog.Catalogs.Add(catalog); #else foreach (var f in new DirectoryInfo("addins").GetFiles().Where(x => x.Name.ToLower().EndsWith(".dll"))) { var catalog = new System.ComponentModel.Composition.Hosting.AssemblyCatalog(Assembly.LoadFile(f.FullName), builder); aCataog.Catalogs.Add(catalog); } #endif var container = new System.ComponentModel.Composition.Hosting.CompositionContainer(aCataog); #if false var host = new PluginHost(); container.ComposeParts(host); return host; #else return container.GetExportedValue<PluginHost>(); #endif }
private CompositionService([MefV1.Import] ExportProvider exportProvider) { Requires.NotNull(exportProvider, nameof(exportProvider)); this.container = new MefV1.Hosting.CompositionContainer(MefV1.Hosting.CompositionOptions.IsThreadSafe, exportProvider.AsExportProvider()); }
public void OnStart(System.ComponentModel.Composition.Hosting.CompositionContainer container) { ExportContentLinks(container); ExportContentUserGroups(container); }
public IValue ProcessMemberReference(MemberExpression expr, IGeneratedQueryCode gc, ICodeContext cc, System.ComponentModel.Composition.Hosting.CompositionContainer container) { throw new NotImplementedException(); }
public Expression ProcessConstantReferenceExpression(ConstantExpression expr, System.ComponentModel.Composition.Hosting.CompositionContainer container) { return(expr); }
public IValue ProcessConstantReference(ConstantExpression expr, IGeneratedQueryCode codeEnv, System.ComponentModel.Composition.Hosting.CompositionContainer container) { return(new LINQToTTreeLib.Variables.ValSimple("35", typeof(int[]))); }
public Expression ProcessNew(NewExpression expression, out IValue result, IGeneratedQueryCode gc, System.ComponentModel.Composition.Hosting.CompositionContainer container) { throw new NotImplementedException(); }
public Expression ProcessMethodCall(MethodCallExpression expr, IGeneratedQueryCode gc, ICodeContext context, System.ComponentModel.Composition.Hosting.CompositionContainer container) { return(expr); }
public static void ComposeParts(System.ComponentModel.Composition.Hosting.CompositionContainer container, Object[] attributedParts) { Contract.Requires(attributedParts != null); Contract.Requires(container != null); }
public ComponentModel(MEFv1.Hosting.CompositionContainer container) { DefaultCompositionService = container; DefaultExportProvider = container; }
public static void ComposeExportedValue <T>(System.ComponentModel.Composition.Hosting.CompositionContainer container, string contractName, T exportedValue) { Contract.Requires(container != null); Contract.Requires(!string.IsNullOrEmpty(contractName)); }
public static void ComposeExportedValue <T>(System.ComponentModel.Composition.Hosting.CompositionContainer container, T exportedValue) { Contract.Requires(container != null); }
/// <summary> /// Recupera o provedor de export. /// </summary> /// <param name="container"></param> /// <returns></returns> private static System.ComponentModel.Composition.Hosting.ExportProvider GetRootExportProvider(System.ComponentModel.Composition.Hosting.CompositionContainer container) { if (_compositionContainerRootProviderField == null) { _compositionContainerRootProviderField = typeof(System.ComponentModel.Composition.Hosting.CompositionContainer).GetField("_rootProvider", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); } return((System.ComponentModel.Composition.Hosting.ExportProvider)_compositionContainerRootProviderField.GetValue(container)); }
internal V1ContainerWrapper(MefV1.Hosting.CompositionContainer container) { Requires.NotNull(container, nameof(container)); this.container = container; }
public IValue CodeMethodCall(MethodCallExpression expr, IGeneratedQueryCode gc, System.ComponentModel.Composition.Hosting.CompositionContainer container) { throw new NotImplementedException(); }
private static void Main(string[] args) { #region MEF1 System.ComponentModel.Composition.Hosting.AggregateCatalog aggregateCatalog = new System.ComponentModel.Composition.Hosting.AggregateCatalog(); aggregateCatalog.Catalogs.Add(new System.ComponentModel.Composition.Hosting.AssemblyCatalog(typeof(Program).Assembly)); System.ComponentModel.Composition.Hosting.CompositionContainer compositionContainer = new System.ComponentModel.Composition.Hosting.CompositionContainer(aggregateCatalog); { ClassA classA = compositionContainer.GetExportedValue <ClassA>(); classA.Log(); classA.ClassB.Value.Log(); classA.ClassB.Value.Log(); } { ClassA classA = compositionContainer.GetExportedValue <ClassA>(); classA.Log(); classA.ClassB.Value.Log(); classA.ClassB.Value.Log(); } { ClassB classB = compositionContainer.GetExportedValue <ClassB>(); classB.Log(); classB.ClassA.Value.Log(); classB.ClassA.Value.Log(); } { ClassB classB = compositionContainer.GetExportedValue <ClassB>(); classB.Log(); classB.ClassA.Value.Log(); classB.ClassA.Value.Log(); } #endregion #region MEF2 System.Composition.Hosting.ContainerConfiguration containerConfiguration = new System.Composition.Hosting.ContainerConfiguration().WithAssembly(typeof(Program).Assembly); System.Composition.Hosting.CompositionHost compositionHost = containerConfiguration.CreateContainer(); { ClassA classA = compositionHost.GetExport <ClassA>(); classA.Log(); classA.ClassB.Value.Log(); classA.ClassB.Value.Log(); } { ClassA classA = compositionHost.GetExport <ClassA>(); classA.Log(); classA.ClassB.Value.Log(); classA.ClassB.Value.Log(); } { ClassB classB = compositionHost.GetExport <ClassB>(); classB.Log(); classB.ClassA.Value.Log(); classB.ClassA.Value.Log(); } { ClassB classB = compositionHost.GetExport <ClassB>(); classB.Log(); classB.ClassA.Value.Log(); classB.ClassA.Value.Log(); } #endregion }
public IValue ProcessMemberReference(MemberExpression expr, IGeneratedQueryCode gc, ICodeContext cc, System.ComponentModel.Composition.Hosting.CompositionContainer container) { return(null); }