protected MethodBaseInfo(string name, Type declaringType, IEnumerable <Type>?genericArguments, IEnumerable <Type>?parameterTypes, TypeInfoProvider typeInfoProvider) : this( name, typeInfoProvider.CheckNotNull(nameof(typeInfoProvider)).GetTypeInfo(declaringType, includePropertyInfos : false, setMemberDeclaringTypes : false), genericArguments?.Select(x => typeInfoProvider.GetTypeInfo(x, false, false)), parameterTypes?.Select(x => typeInfoProvider.GetTypeInfo(x, false, false))) { }
protected MethodBaseInfo(System.Reflection.MethodBase method, TypeInfoProvider typeInfoProvider) : base(method, typeInfoProvider) { var genericArguments = method.CheckNotNull(nameof(method)).IsGenericMethod ? method.GetGenericArguments() : null; GenericArgumentTypes = genericArguments .AsNullIfEmpty()? .Select(x => typeInfoProvider.GetTypeInfo(x, false, false)) .ToList(); ParameterTypes = method .GetParameters() .AsNullIfEmpty()? .Select(x => typeInfoProvider.GetTypeInfo(x.ParameterType, false, false)) .ToList(); }
internal TypeInfo(Type type, TypeInfoProvider typeInfoProvider) { typeInfoProvider.RegisterReference(type, this); _type = type; Name = type.Name; Namespace = type.Namespace; if (type.IsArray) { if (!IsArray) { throw new ArgumentException("Type name is not in expected format for array type"); } type = type.GetElementType() !; } if (type.IsNested && !type.IsGenericParameter) { DeclaringType = typeInfoProvider.GetTypeInfo(type.DeclaringType, false, false); } IsGenericType = type.IsGenericType; if (IsGenericType && !type.GetTypeInfo().IsGenericTypeDefinition) { GenericArguments = type .GetGenericArguments() .Select(x => typeInfoProvider.GetTypeInfo(x)) .ToList(); } IsAnonymousType = type.IsAnonymousType(); if (IsAnonymousType || typeInfoProvider.IncludePropertyInfos) { Properties = type .GetProperties() .OrderBy(x => x.MetadataToken) .Select(x => new PropertyInfo(x.Name, typeInfoProvider.GetTypeInfo(x.PropertyType), typeInfoProvider.SetMemberDeclaringTypes ? this : null)) .ToList(); } }
private PropertyInfo(string propertyName, Type propertyType, Type declaringType, TypeInfoProvider typeInfoProvider) : this(propertyName, typeInfoProvider.GetTypeInfo(propertyType, false, false), typeInfoProvider.GetTypeInfo(declaringType, false, false)) { }
internal PropertyInfo(System.Reflection.PropertyInfo property, TypeInfoProvider typeInfoProvider) : base(property, typeInfoProvider) { _property = property; PropertyType = typeInfoProvider.GetTypeInfo(property.PropertyType, false, false); }