public IEnumerable <ImportDefinition> GetImports() { if (_imports == null) { yield break; } IEnumerable <ImportDefinition> imports = _imports.Value; if (imports == null) { yield break; } foreach (ImportDefinition import in imports) { ReflectionImportDefinition reflectionImport = import as ReflectionImportDefinition; if (reflectionImport == null) { throw new InvalidOperationException( SR.Format(SR.ReflectionModel_InvalidMemberImportDefinition, import.GetType())); } yield return(reflectionImport); } }
public IEnumerable <ImportDefinition> GetImports() { if (this._imports == null) { yield break; } IEnumerable <ImportDefinition> imports = this._imports.Value; if (imports == null) { yield break; } foreach (ImportDefinition import in imports) { ReflectionImportDefinition reflectionImport = import as ReflectionImportDefinition; if (reflectionImport == null) { throw new InvalidOperationException( string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidMemberImportDefinition, import.GetType())); } yield return(reflectionImport); } }
private static ImportingItem GetImportingItem(ImportDefinition definition) { ReflectionImportDefinition reflectionDefinition = definition as ReflectionImportDefinition; if (reflectionDefinition != null) { return(reflectionDefinition.ToImportingItem()); } // Don't recognize it return(null); }
public static bool IsImportingParameter(ImportDefinition importDefinition) { Requires.NotNull(importDefinition, "importDefinition"); ReflectionImportDefinition reflectionImportDefinition = importDefinition as ReflectionImportDefinition; if (reflectionImportDefinition == null) { throw new ArgumentException( string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidImportDefinition, importDefinition.GetType()), "importDefinition"); } return(importDefinition is ReflectionParameterImportDefinition); }
internal static bool IsExportFactoryImportDefinition(ImportDefinition importDefinition) { Requires.NotNull(importDefinition, "importDefinition"); ReflectionImportDefinition reflectionImportDefinition = importDefinition as ReflectionImportDefinition; if (reflectionImportDefinition == null) { throw new ArgumentException( string.Format(CultureInfo.CurrentCulture, Strings.ReflectionModel_InvalidImportDefinition, importDefinition.GetType()), "importDefinition"); } return(importDefinition is IPartCreatorImportDefinition); }
public static bool IsImportingParameter(ImportDefinition importDefinition) { Requires.NotNull(importDefinition, nameof(importDefinition)); ReflectionImportDefinition reflectionImportDefinition = importDefinition as ReflectionImportDefinition; if (reflectionImportDefinition == null) { throw new ArgumentException( SR.Format(SR.ReflectionModel_InvalidImportDefinition, importDefinition.GetType()), nameof(importDefinition)); } return(importDefinition is ReflectionParameterImportDefinition); }
private List <ImportDefinition> PopulateImports(List <LazyMemberInfo> members, List <Lazy <ParameterInfo> > parameters) { List <ImportDefinition> imports = new List <ImportDefinition>(); foreach (ImportDefinition originalImport in _originalPartCreationInfo.GetImports()) { ReflectionImportDefinition reflectionImport = originalImport as ReflectionImportDefinition; if (reflectionImport == null) { // we always ignore these continue; } imports.Add(TranslateImport(reflectionImport, members, parameters)); } return(imports); }
private ImportDefinition TranslateImport(ReflectionImportDefinition reflectionImport, List <LazyMemberInfo> members, List <Lazy <ParameterInfo> > parameters) { bool isExportFactory = false; ContractBasedImportDefinition productImport = reflectionImport; if (reflectionImport is IPartCreatorImportDefinition exportFactoryImportDefinition) { productImport = exportFactoryImportDefinition.ProductImportDefinition; isExportFactory = true; } string contractName = Translate(productImport.ContractName); string requiredTypeIdentity = Translate(productImport.RequiredTypeIdentity !); IDictionary <string, object?> metadata = TranslateImportMetadata(productImport); ImportDefinition?import = null; if (reflectionImport is ReflectionMemberImportDefinition memberImport) { LazyMemberInfo lazyMember = memberImport.ImportingLazyMember; LazyMemberInfo importingMember = new LazyMemberInfo(lazyMember.MemberType, () => GetAccessors(lazyMember)); if (isExportFactory) { import = new PartCreatorMemberImportDefinition( importingMember, ((ICompositionElement)memberImport).Origin, new ContractBasedImportDefinition( contractName, requiredTypeIdentity, productImport.RequiredMetadata, productImport.Cardinality, productImport.IsRecomposable, false, CreationPolicy.NonShared, metadata)); } else { import = new ReflectionMemberImportDefinition( importingMember, contractName, requiredTypeIdentity, productImport.RequiredMetadata, productImport.Cardinality, productImport.IsRecomposable, false, productImport.RequiredCreationPolicy, metadata, ((ICompositionElement)memberImport).Origin); } members.Add(lazyMember); } else { ReflectionParameterImportDefinition?parameterImport = reflectionImport as ReflectionParameterImportDefinition; if (parameterImport == null) { throw new Exception(SR.Diagnostic_InternalExceptionMessage); } Lazy <ParameterInfo> lazyParameter = parameterImport.ImportingLazyParameter; Lazy <ParameterInfo> parameter = new Lazy <ParameterInfo>(() => GetParameter(lazyParameter)); if (isExportFactory) { import = new PartCreatorParameterImportDefinition( parameter, ((ICompositionElement)parameterImport).Origin, new ContractBasedImportDefinition( contractName, requiredTypeIdentity, productImport.RequiredMetadata, productImport.Cardinality, false, true, CreationPolicy.NonShared, metadata)); } else { import = new ReflectionParameterImportDefinition( parameter, contractName, requiredTypeIdentity, productImport.RequiredMetadata, productImport.Cardinality, productImport.RequiredCreationPolicy, metadata, ((ICompositionElement)parameterImport).Origin); } parameters.Add(lazyParameter); } return(import); }
private ImportDefinition TranslateImport(ReflectionImportDefinition reflectionImport, List<LazyMemberInfo> members, List<Lazy<ParameterInfo>> parameters) { bool isExportFactory = false; ContractBasedImportDefinition productImport = reflectionImport; IPartCreatorImportDefinition exportFactoryImportDefinition = reflectionImport as IPartCreatorImportDefinition; if (exportFactoryImportDefinition != null) { productImport = exportFactoryImportDefinition.ProductImportDefinition; isExportFactory = true; } string contractName = this.Translate(productImport.ContractName); string requiredTypeIdentity = this.Translate(productImport.RequiredTypeIdentity); IDictionary<string, object> metadata = this.TranslateImportMetadata(productImport); ReflectionMemberImportDefinition memberImport = reflectionImport as ReflectionMemberImportDefinition; ImportDefinition import = null; if (memberImport != null) { LazyMemberInfo lazyMember = memberImport.ImportingLazyMember; LazyMemberInfo importingMember = new LazyMemberInfo(lazyMember.MemberType, () => GetAccessors(lazyMember)); if (isExportFactory) { import = new PartCreatorMemberImportDefinition( importingMember, ((ICompositionElement)memberImport).Origin, new ContractBasedImportDefinition( contractName, requiredTypeIdentity, productImport.RequiredMetadata, productImport.Cardinality, productImport.IsRecomposable, false, CreationPolicy.NonShared, metadata)); } else { import = new ReflectionMemberImportDefinition( importingMember, contractName, requiredTypeIdentity, productImport.RequiredMetadata, productImport.Cardinality, productImport.IsRecomposable, false, productImport.RequiredCreationPolicy, metadata, ((ICompositionElement)memberImport).Origin); } members.Add(lazyMember); } else { ReflectionParameterImportDefinition parameterImport = reflectionImport as ReflectionParameterImportDefinition; Assumes.NotNull(parameterImport); Lazy<ParameterInfo> lazyParameter = parameterImport.ImportingLazyParameter; Lazy<ParameterInfo> parameter = new Lazy<ParameterInfo>(() => GetParameter(lazyParameter)); if (isExportFactory) { import = new PartCreatorParameterImportDefinition( parameter, ((ICompositionElement)parameterImport).Origin, new ContractBasedImportDefinition( contractName, requiredTypeIdentity, productImport.RequiredMetadata, productImport.Cardinality, false, true, CreationPolicy.NonShared, metadata)); } else { import = new ReflectionParameterImportDefinition( parameter, contractName, requiredTypeIdentity, productImport.RequiredMetadata, productImport.Cardinality, productImport.RequiredCreationPolicy, metadata, ((ICompositionElement)parameterImport).Origin); } parameters.Add(lazyParameter); } return import; }