internal MethodBaseInfo(MethodBaseInfo methodBaseInfo, TypeInfoProvider typeInfoProvider) : base(methodBaseInfo, typeInfoProvider) { BindingFlags = methodBaseInfo.BindingFlags; GenericArgumentTypes = methodBaseInfo.GenericArgumentTypes?.Select(typeInfoProvider.Get).ToList(); ParameterTypes = methodBaseInfo.ParameterTypes?.Select(typeInfoProvider.Get).ToList(); }
internal MethodBaseInfo(MethodBaseInfo methodBaseInfo, TypeInfoProvider typeInfoProvider) : base(methodBaseInfo, typeInfoProvider) { // TODO: why is the dammit operator required!? GenericArgumentTypes = methodBaseInfo.GenericArgumentTypes?.Select(typeInfoProvider.Get).ToList() !; ParameterTypes = methodBaseInfo.ParameterTypes?.Select(typeInfoProvider.Get).ToList() !; }
public virtual TypeInfo?Get(Type?type, bool?includePropertyInfosOverride = null, bool?setMemberDeclaringTypesOverride = null) { if (type is null) { return(null); } if (_referenceTracker.TryGetValue(type, out TypeInfo typeInfo)) { return(typeInfo); } if (_parent != null) { return(_parent.Get(type, includePropertyInfosOverride, setMemberDeclaringTypesOverride)); } var context = this; if ((includePropertyInfosOverride.HasValue && includePropertyInfosOverride != IncludePropertyInfos) || (setMemberDeclaringTypesOverride.HasValue && setMemberDeclaringTypesOverride != SetMemberDeclaringTypes)) { context = new TypeInfoProvider( includePropertyInfosOverride ?? IncludePropertyInfos, setMemberDeclaringTypesOverride ?? SetMemberDeclaringTypes, this); } return(new TypeInfo(type, context)); }
internal MemberInfo(System.Reflection.MemberInfo memberInfo, TypeInfoProvider typeInfoProvider) { if (!(memberInfo is null)) { Name = memberInfo.Name; DeclaringType = typeInfoProvider.Get(memberInfo.DeclaringType, false, false); } }
internal MemberInfo(MemberInfo memberInfo, TypeInfoProvider typeInfoProvider) { if (!(memberInfo is null)) { Name = memberInfo.Name; DeclaringType = typeInfoProvider.Get(memberInfo.DeclaringType); } }
protected MemberInfo(System.Reflection.MemberInfo member, TypeInfoProvider typeInfoProvider) { Name = member.CheckNotNull(nameof(member)).Name; DeclaringType = typeInfoProvider.CheckNotNull(nameof(typeInfoProvider)).GetTypeInfo(member.DeclaringType, false, false); if (member.GetBindingFlags().Contains(System.Reflection.BindingFlags.Static)) { IsStatic = true; } }
internal PropertyInfo(PropertyInfo propertyInfo, TypeInfoProvider typeInfoProvider) : base(propertyInfo, typeInfoProvider) { if (propertyInfo is null) { throw new ArgumentNullException(nameof(propertyInfo)); } PropertyType = typeInfoProvider.Get(propertyInfo.PropertyType); _property = propertyInfo._property; }
protected MethodBaseInfo(MethodBaseInfo method, TypeInfoProvider typeInfoProvider) : base(method, typeInfoProvider) { GenericArgumentTypes = method.CheckNotNull(nameof(method)).GenericArgumentTypes .AsNullIfEmpty()? .Select(x => typeInfoProvider.Get(x)) .ToList(); ParameterTypes = method.ParameterTypes .AsNullIfEmpty()? .Select(x => typeInfoProvider.Get(x)) .ToList(); }
internal TypeInfo(TypeInfo typeInfo, TypeInfoProvider typeInfoProvider) { typeInfoProvider.RegisterReference(typeInfo, this); Name = typeInfo.Name; Namespace = typeInfo.Namespace; DeclaringType = typeInfo.DeclaringType is null ? null : typeInfoProvider.Get(typeInfo.DeclaringType); GenericArguments = typeInfo.GenericArguments?.Select(x => typeInfoProvider.Get(x)).ToList(); IsGenericType = typeInfo.IsGenericType; IsAnonymousType = typeInfo.IsAnonymousType; Properties = typeInfo.Properties?.Select(x => new PropertyInfo(x, typeInfoProvider)).ToList(); _type = typeInfo._type; }
internal TypeInfo(Type type, TypeInfoProvider typeInfoProvider) { if (type is null) { throw new ArgumentNullException(nameof(type)); } 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.Get(type.DeclaringType, false, false); } IsGenericType = type.IsGenericType; if (IsGenericType && !type.GetTypeInfo().IsGenericTypeDefinition) { GenericArguments = type .GetGenericArguments() .Select(x => typeInfoProvider.Get(x)) .ToList(); } IsAnonymousType = type.IsAnonymousType(); if (IsAnonymousType || typeInfoProvider.IncludePropertyInfos) { Properties = type .GetProperties() .OrderBy(x => x.MetadataToken) .Select(x => new PropertyInfo(x.Name, typeInfoProvider.Get(x.PropertyType), typeInfoProvider.SetMemberDeclaringTypes ? this : null)) .ToList(); } }
internal MemberInfo(System.Reflection.MemberInfo memberInfo, TypeInfoProvider typeInfoProvider) { if (memberInfo is null) { throw new ArgumentNullException(nameof(memberInfo)); } Name = memberInfo.Name; DeclaringType = typeInfoProvider.Get(memberInfo.DeclaringType, false, false); if (memberInfo.GetBindingFlags().Contains(System.Reflection.BindingFlags.Static)) { IsStatic = true; } }
internal MethodBaseInfo(System.Reflection.MethodBase methodInfo, TypeInfoProvider typeInfoProvider) : base(methodInfo, typeInfoProvider) { var genericArguments = methodInfo.IsGenericMethod ? methodInfo.GetGenericArguments() : null; GenericArgumentTypes = genericArguments is null || genericArguments.Length == 0 ? null : genericArguments.Select(x => typeInfoProvider.Get(x, false, false)).ToList(); var parameters = methodInfo.GetParameters(); ParameterTypes = parameters.Length == 0 ? null : parameters.Select(x => typeInfoProvider.Get(x.ParameterType, false, false)).ToList(); }
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(TypeInfo typeInfo, TypeInfoProvider typeInfoProvider) { if (typeInfo is null) { throw new ArgumentNullException(nameof(typeInfo)); } typeInfoProvider.RegisterReference(typeInfo, this); Name = typeInfo.Name; Namespace = typeInfo.Namespace; DeclaringType = typeInfo.DeclaringType is null ? null : typeInfoProvider.Get(typeInfo.DeclaringType); // TODO: why is the dammit operator required!? GenericArguments = typeInfo.GenericArguments?.Select(typeInfoProvider.Get).ToList() !; IsGenericType = typeInfo.IsGenericType; IsAnonymousType = typeInfo.IsAnonymousType; Properties = typeInfo.Properties?.Select(x => new PropertyInfo(x, typeInfoProvider)).ToList(); _type = typeInfo._type; }
internal MethodBaseInfo(System.Reflection.MethodBase methodInfo, TypeInfoProvider typeInfoProvider) : base(methodInfo, typeInfoProvider) { var bindingFlags = methodInfo.IsStatic ? BindingFlags.Static : BindingFlags.Instance; bindingFlags |= methodInfo.IsPublic ? BindingFlags.Public : BindingFlags.NonPublic; BindingFlags = bindingFlags; var genericArguments = methodInfo.IsGenericMethod ? methodInfo.GetGenericArguments() : null; GenericArgumentTypes = genericArguments is null || genericArguments.Length == 0 ? null : genericArguments.Select(x => typeInfoProvider.Get(x, false, false)).ToList(); var parameters = methodInfo.GetParameters(); ParameterTypes = parameters.Length == 0 ? null : parameters.Select(x => typeInfoProvider.Get(x.ParameterType, false, false)).ToList(); }
internal static MemberInfo Create(System.Reflection.MemberInfo memberInfo, TypeInfoProvider typeInfoProvider) { switch (memberInfo.GetMemberType()) { case MemberTypes.Field: return(new FieldInfo((System.Reflection.FieldInfo)memberInfo, typeInfoProvider)); case MemberTypes.Constructor: return(new ConstructorInfo((System.Reflection.ConstructorInfo)memberInfo, typeInfoProvider)); case MemberTypes.Property: return(new PropertyInfo((System.Reflection.PropertyInfo)memberInfo, typeInfoProvider)); case MemberTypes.Method: return(new MethodInfo((System.Reflection.MethodInfo)memberInfo, typeInfoProvider)); default: throw new Exception($"Not supported member type: {memberInfo.GetMemberType()}"); } }
public MethodInfo(System.Reflection.MethodInfo method, TypeInfoProvider typeInfoProvider) : base(method, typeInfoProvider) { _method = method; ReturnType = typeInfoProvider.CheckNotNull(nameof(typeInfoProvider)).GetTypeInfo(method?.ReturnType, false, false); }
internal MethodInfo(string name, Type declaringType, IEnumerable <Type>?genericArguments, IEnumerable <Type>?parameterTypes, Type?returnType, TypeInfoProvider typeInfoProvider) : base(name, declaringType, genericArguments, parameterTypes, typeInfoProvider) { ReturnType = typeInfoProvider.Get(returnType, false, false); }
internal MethodInfo(System.Reflection.MethodInfo methodInfo, TypeInfoProvider typeInfoProvider) : base(methodInfo, typeInfoProvider) { _method = methodInfo; ReturnType = typeInfoProvider.Get(methodInfo?.ReturnType, false, false); }
internal MethodInfo(System.Reflection.MethodInfo methodInfo, TypeInfoProvider typeInfoProvider) : base(methodInfo, typeInfoProvider) { _method = methodInfo; }
public ConstructorInfo(System.Reflection.ConstructorInfo constructor, TypeInfoProvider typeInfoProvider) : base(constructor, typeInfoProvider) { _constructor = constructor; }
internal PropertyInfo(System.Reflection.PropertyInfo propertyInfo, TypeInfoProvider typeInfoProvider) : base(propertyInfo, typeInfoProvider) { _property = propertyInfo; PropertyType = typeInfoProvider.Get(propertyInfo.PropertyType, false, false); }
internal ConstructorInfo(System.Reflection.ConstructorInfo constructorInfo, TypeInfoProvider typeInfoProvider) : base(constructorInfo, typeInfoProvider) { _constructor = constructorInfo; }
internal MethodBaseInfo(string name, Type declaringType, IEnumerable <Type>?genericArguments, IEnumerable <Type>?parameterTypes, TypeInfoProvider typeInfoProvider) : this( name, typeInfoProvider.Get(declaringType, includePropertyInfosOverride : false, setMemberDeclaringTypesOverride : false), genericArguments?.Select(x => typeInfoProvider.Get(x, false, false)), parameterTypes?.Select(x => typeInfoProvider.Get(x, false, false))) { }
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))) { }
internal FieldInfo(System.Reflection.FieldInfo fieldInfo, TypeInfoProvider typeInfoProvider) : base(fieldInfo, typeInfoProvider) { _field = fieldInfo; }
private PropertyInfo(string propertyName, Type propertyType, Type declaringType, TypeInfoProvider typeInfoProvider) : this(propertyName, typeInfoProvider.Get(propertyType, false, false), typeInfoProvider.Get(declaringType, false, false)) { }
public MethodInfo(string name, Type declaringType, IEnumerable <Type>?genericArguments, IEnumerable <Type>?parameterTypes, Type?returnType, TypeInfoProvider typeInfoProvider) : base(name, declaringType, genericArguments, parameterTypes, typeInfoProvider) { ReturnType = typeInfoProvider.CheckNotNull(nameof(typeInfoProvider)).GetTypeInfo(returnType, false, false); }
// TODO: replace binding flags by bool flags internal MethodBaseInfo(string name, Type declaringType, BindingFlags bindingFlags, Type[] genericArguments, Type[] parameterTypes, TypeInfoProvider typeInfoProvider) : this( name, typeInfoProvider.Get(declaringType, includePropertyInfosOverride : false, setMemberDeclaringTypesOverride : false), bindingFlags, genericArguments?.Select(x => typeInfoProvider.Get(x, false, false)), parameterTypes?.Select(x => typeInfoProvider.Get(x, false, false))) { }
internal PropertyInfo(PropertyInfo propertyInfo, TypeInfoProvider typeInfoProvider) : base(propertyInfo, typeInfoProvider) { PropertyType = typeInfoProvider.Get(propertyInfo.PropertyType); _property = propertyInfo._property; }