public ITypeInfo MakeGenericType(IEnumerable <Type> genericTypeArguments) { if (genericTypeArguments == null) { throw new ArgumentNullException(nameof(genericTypeArguments)); } return(_reflection.CreateType(_type.MakeGenericType(genericTypeArguments.ToArray()))); }
public AttributeImpl( [NotNull] IAttributeDescriptor descriptor, [NotNull] Attribute attribute, [NotNull] IReflection reflection) { if (descriptor == null) { throw new ArgumentNullException(nameof(descriptor)); } if (attribute == null) { throw new ArgumentNullException(nameof(attribute)); } if (reflection == null) { throw new ArgumentNullException(nameof(reflection)); } var type = attribute.GetType(); Descriptor = descriptor; var typeInfo = reflection.CreateType(type); _properties = ( from property in typeInfo.Properties select new { name = property.Name, value = property.GetValue(attribute) }).ToDictionary(i => i.name, i => i.value); }
private IEnumerable <IEnumerable <object> > GetParameters( [NotNull] IEnumerable <IAttribute> caseSources, [NotNull] IEnumerable <IAttribute> cases) { if (caseSources == null) { throw new ArgumentNullException(nameof(caseSources)); } if (cases == null) { throw new ArgumentNullException(nameof(cases)); } var genericArgsFromSources = from caseSourceAttribute in caseSources from caseSourceType in caseSourceAttribute.GetValue <IEnumerable <Type> >(_attributeMap.GetDescriptor(Wellknown.Properties.Types)) let caseSourceInstance = _reflection.CreateType(caseSourceType).CreateInstance(Enumerable.Empty <object>()) as IEnumerable from paramsItem in GetParams(caseSourceInstance) select paramsItem; var parameters = from caseAttribute in cases select caseAttribute.GetValue <IEnumerable <object> >(_attributeMap.GetDescriptor(Wellknown.Properties.Parameters)); return(genericArgsFromSources.Concat(parameters)); }
private bool MatchTypeName(Type type, string fullTypeName) { var curType = _reflection.CreateType(type); do { if (fullTypeName.Equals(curType.FullName, StringComparison.OrdinalIgnoreCase)) { return(true); } curType = curType.BaseType; }while (curType.Type != typeof(Attribute)); return(false); }
public ITypeInfo GetType(string fullyQualifiedTypeName) { if (fullyQualifiedTypeName == null) { throw new ArgumentNullException(nameof(fullyQualifiedTypeName)); } return(_reflection.CreateType(_assembly.GetType(fullyQualifiedTypeName))); }
public IEnumerable <IEnumerable <Type> > GetGenericArgs(IMemberInfo memberInfo) { if (memberInfo == null) { throw new ArgumentNullException(nameof(memberInfo)); } var genericArgsFromSources = from genericArgsSourceAttribute in _attributeAccessor.GetAttributes(memberInfo, _attributeMap.GetDescriptor(Wellknown.Attributes.GenericArgsSource)) from genericArgsSourceType in genericArgsSourceAttribute.GetValue <IEnumerable <Type> >(_attributeMap.GetDescriptor(Wellknown.Properties.Types)) let genericArgsSourceInstance = _reflection.CreateType(genericArgsSourceType).CreateInstance(Enumerable.Empty <object>()) as IEnumerable from genericArgsItem in GetGenericArgs(genericArgsSourceInstance) select genericArgsItem; var genericArgs = from genericArgsAtr in _attributeAccessor.GetAttributes(memberInfo, _attributeMap.GetDescriptor(Wellknown.Attributes.GenericArgs)) select genericArgsAtr.GetValue <IEnumerable <Type> >(_attributeMap.GetDescriptor(Wellknown.Properties.Types)); return(genericArgsFromSources.Concat(genericArgs)); }