Exemplo n.º 1
0
 public ITypeInfo MakeGenericType(IEnumerable <Type> genericTypeArguments)
 {
     if (genericTypeArguments == null)
     {
         throw new ArgumentNullException(nameof(genericTypeArguments));
     }
     return(_reflection.CreateType(_type.MakeGenericType(genericTypeArguments.ToArray())));
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
 public ITypeInfo GetType(string fullyQualifiedTypeName)
 {
     if (fullyQualifiedTypeName == null)
     {
         throw new ArgumentNullException(nameof(fullyQualifiedTypeName));
     }
     return(_reflection.CreateType(_assembly.GetType(fullyQualifiedTypeName)));
 }
Exemplo n.º 6
0
        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));
        }