private IEnumerable <MemberInfo> GetDeclaredOnlyImportMembers(Type type) { BindingFlags flags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; FieldInfo[] fieldInfoArray = type.GetFields(flags); int index; for (index = 0; index < fieldInfoArray.Length; ++index) { FieldInfo fieldInfo = fieldInfoArray[index]; if (ReflectionPartCreation.IsImport((ICustomAttributeProvider)fieldInfo) && !fieldInfo.ReflectedType.ContainsGenericParameters) { yield return((MemberInfo)fieldInfo); } } fieldInfoArray = (FieldInfo[])null; PropertyInfo[] propertyInfoArray = type.GetProperties(flags); for (index = 0; index < propertyInfoArray.Length; ++index) { PropertyInfo propertyInfo = propertyInfoArray[index]; if (ReflectionPartCreation.IsImport((ICustomAttributeProvider)propertyInfo) && !propertyInfo.ReflectedType.ContainsGenericParameters) { yield return((MemberInfo)propertyInfo); } } propertyInfoArray = (PropertyInfo[])null; }
public ConstructorInfo GetConstructor() { if (this._constructor == (ConstructorInfo)null && !this._ignoreConstructorImports) { this._constructor = ReflectionPartCreation.SelectPartConstructor(this._type); } return(this._constructor); }
public ComposablePartDefinition CreateDiscoverablePartDefinition(Type type) { ReflectionPartCreation partCreation = new ReflectionPartCreation(type, false); if (!partCreation.IsPartDiscoverable()) { return((ComposablePartDefinition)null); } return((ComposablePartDefinition) new ReflectedComposablePartDefinition((IReflectionPartCreation)partCreation)); }
public static ImportDefinition CreateMemberImport(MemberInfo member, ICompositionElement origin) { IAttributedImport attributedImport = ReflectionPartCreation.GetAttributedImport((ICustomAttributeProvider)member); if (string.IsNullOrEmpty(attributedImport.ContractName)) { return(new ImportDefinition(member.Name, member.GetDefaultTypeFromMember())); } return(new ContractBasedImportDefinition(member.Name, member.GetDefaultTypeFromMember(), attributedImport.ContractName)); }
public static ImportDefinition CreateParameterImport(ParameterInfo parameter, ICompositionElement origin) { ReflectionParameter reflectionParameter = new ReflectionParameter(parameter); IAttributedImport attributedImport = ReflectionPartCreation.GetAttributedImport((ICustomAttributeProvider)parameter); if (string.IsNullOrEmpty(attributedImport.ContractName)) { return(new ImportDefinition(parameter.Name, parameter.ParameterType)); } return(new ContractBasedImportDefinition(parameter.Name, parameter.ParameterType, attributedImport.ContractName)); }
private IEnumerable <MemberInfo> GetExportMembers(Type type) { BindingFlags flags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic; if (type.IsAbstract) { flags &= ~BindingFlags.Instance; } else if (ReflectionPartCreation.IsExport((ICustomAttributeProvider)type) && !this._type.ContainsGenericParameters) { yield return((MemberInfo)type); } FieldInfo[] fieldInfoArray = type.GetFields(flags); int index; for (index = 0; index < fieldInfoArray.Length; ++index) { FieldInfo fieldInfo = fieldInfoArray[index]; if (ReflectionPartCreation.IsExport((ICustomAttributeProvider)fieldInfo) && !this._type.ContainsGenericParameters) { yield return((MemberInfo)fieldInfo); } } fieldInfoArray = (FieldInfo[])null; PropertyInfo[] propertyInfoArray = type.GetProperties(flags); for (index = 0; index < propertyInfoArray.Length; ++index) { PropertyInfo propertyInfo = propertyInfoArray[index]; if (ReflectionPartCreation.IsExport((ICustomAttributeProvider)propertyInfo) && !this._type.ContainsGenericParameters) { yield return((MemberInfo)propertyInfo); } } propertyInfoArray = (PropertyInfo[])null; MethodInfo[] methodInfoArray = type.GetMethods(flags); for (index = 0; index < methodInfoArray.Length; ++index) { MethodInfo methodInfo = methodInfoArray[index]; if (ReflectionPartCreation.IsExport((ICustomAttributeProvider)methodInfo) && !this._type.ContainsGenericParameters) { yield return((MemberInfo)methodInfo); } } methodInfoArray = (MethodInfo[])null; }
private IEnumerable <ImportDefinition> GetImportDefinitions() { List <ImportDefinition> importDefinitionList = new List <ImportDefinition>(); foreach (MemberInfo importMember in this.GetImportMembers(this._type)) { ImportDefinition importDefinition = ReflectionPartCreation.CreateMemberImport(importMember, (ICompositionElement)this); importDefinitionList.Add((ImportDefinition)importDefinition); } ConstructorInfo constructor = this.GetConstructor(); if (constructor != (ConstructorInfo)null) { foreach (ParameterInfo parameter in constructor.GetParameters()) { ImportDefinition importDefinition = ReflectionPartCreation.CreateParameterImport(parameter, (ICompositionElement)this); importDefinitionList.Add((ImportDefinition)importDefinition); } } return((IEnumerable <ImportDefinition>)importDefinitionList); }
public ReflectedComposablePartDefinition CreatePartDefinition(Type type) { ReflectionPartCreation partCreation = new ReflectionPartCreation(type, false); return(new ReflectedComposablePartDefinition((IReflectionPartCreation)partCreation)); }