public void GetExportsImportDefinitionForDelegateExport(IContainer container) { var exportProvider = GetMefV1Container(container); var importDefinition = new MefV1.Primitives.ContractBasedImportDefinition( MefV1.AttributedModelServices.GetTypeIdentity(typeof(SomeDelegate)), MefV1.AttributedModelServices.GetTypeIdentity(typeof(SomeDelegate)), new KeyValuePair <string, Type>[] { new KeyValuePair <string, Type>("A", typeof(string)), }, MefV1.Primitives.ImportCardinality.ZeroOrMore, false, true, MefV1.CreationPolicy.Any); var results = exportProvider.GetExports(importDefinition).ToArray(); Assert.Equal(2, results.Length); Assert.Equal(1, results.Count(r => r.Metadata["A"].Equals("instance"))); Assert.Equal(1, results.Count(r => r.Metadata["A"].Equals("static"))); foreach (var export in results) { Assert.IsAssignableFrom(typeof(MefV1.Primitives.ExportedDelegate), export.Value); var exportedDelegate = (MefV1.Primitives.ExportedDelegate)export.Value; SomeDelegate asSomeDelegate = (SomeDelegate)exportedDelegate.CreateDelegate(typeof(SomeDelegate)); Assert.Null(asSomeDelegate(null, null)); Delegate asDelegate = exportedDelegate.CreateDelegate(typeof(Delegate)); Assert.Null(asDelegate.DynamicInvoke(new object[2])); } }
public void GetExportsImportDefinitionForDelegateExportWithMismatchingSignature(IContainer container) { var exportProvider = GetMefV1Container(container); var importDefinition = new MefV1.Primitives.ContractBasedImportDefinition( MefV1.AttributedModelServices.GetTypeIdentity(typeof(SomeDelegate)), MefV1.AttributedModelServices.GetTypeIdentity(typeof(SomeDelegate)), new KeyValuePair <string, Type> [0], MefV1.Primitives.ImportCardinality.ZeroOrMore, false, true, MefV1.CreationPolicy.Any); var results = exportProvider.GetExports(importDefinition).ToArray(); Assert.Equal(1, results.Length); foreach (var export in results) { Assert.IsAssignableFrom(typeof(MefV1.Primitives.ExportedDelegate), export.Value); var exportedDelegate = (MefV1.Primitives.ExportedDelegate)export.Value; Delegate asDelegate = exportedDelegate.CreateDelegate(typeof(Delegate)); Assert.Null(asDelegate.DynamicInvoke(new object[1])); } }
public void GetExportsImportDefinitionForDelegateReturningProperty(IContainer container) { var exportProvider = GetMefV1Container(container); SomeDelegate del = exportProvider.GetExportedValue <SomeDelegate>(); Assert.Null(del(null, null)); var importDefinition = new MefV1.Primitives.ContractBasedImportDefinition( MefV1.AttributedModelServices.GetTypeIdentity(typeof(SomeDelegate)), MefV1.AttributedModelServices.GetTypeIdentity(typeof(SomeDelegate)), new KeyValuePair <string, Type> [0], MefV1.Primitives.ImportCardinality.ZeroOrMore, false, true, MefV1.CreationPolicy.Any); var results = exportProvider.GetExports(importDefinition).ToArray(); Assert.Equal(1, results.Length); Assert.IsAssignableFrom(typeof(SomeDelegate), results[0].Value); }
public void GetExportsImportDefinitionForTypeExport(IContainer container) { var v3Container = (TestUtilities.V3ContainerWrapper)container; var exportProvider = v3Container.ExportProvider.AsExportProvider(); var importDefinition = new MefV1.Primitives.ContractBasedImportDefinition( MefV1.AttributedModelServices.GetTypeIdentity(typeof(Tree)), MefV1.AttributedModelServices.GetTypeIdentity(typeof(Tree)), new KeyValuePair <string, Type>[] { new KeyValuePair <string, Type>("A", typeof(string)), }, MefV1.Primitives.ImportCardinality.ZeroOrMore, false, true, MefV1.CreationPolicy.Any); var results = exportProvider.GetExports(importDefinition).ToArray(); Assert.Equal(1, results.Length); Assert.Equal("b", results[0].Metadata["A"]); Assert.IsType <Tree>(results[0].Value); }