Exemplo n.º 1
0
 /// <summary>
 /// Gets the public methods inherited by a type
 /// </summary>
 /// <param name="t">The type to examine</param>
 /// <param name="InstanceType">The instance type classification</param>
 public static IEnumerable <MethodInfo> InheritedPublicMethods(this Type t, MemberInstanceType InstanceType)
 => (InstanceType.IsStaticType()
         ? t.BaseType?.GetMethods(BF_AllPublicStatic)
         : t.BaseType?.GetMethods(BF_AllPublicInstance))
 ?? new MethodInfo[]
 {
 };
Exemplo n.º 2
0
        /// <summary>
        /// Retrieves the attribution index for the identified methods declared by the type
        /// </summary>
        /// <typeparam name="A">The attribute type</typeparam>
        /// <param name="t">The type to examine</param>
        /// <param name="InstanceType">The member instance type</param>
        public static IDictionary <MethodInfo, A> MethodAttributions <A>(this Type t,
                                                                         MemberInstanceType InstanceType = MemberInstanceType.Instance)
            where A : Attribute
        {
            var q = from m in t.DeclaredMethods(InstanceType)
                    where Attribute.IsDefined(m, typeof(A))
                    let attrib = m.GetCustomAttribute <A>()
                                 select new
            {
                Member    = m,
                Attribute = attrib
            };

            return(q.ToDictionary(x => x.Member, x => x.Attribute));
        }
Exemplo n.º 3
0
 /// <summary>
 /// Retrieves the public and not public methods declared by a type
 /// </summary>
 /// <param name="t">The type to examine</param>
 /// <param name="InstanceType">Whether to selct static or instance </param>
 public static IEnumerable <MethodInfo> DeclaredMethods(this Type t, MemberInstanceType InstanceType)
 => t.GetMethods(InstanceType.IsStaticType()  ? BF_DeclaredStatic : BF_DeclaredInstance);
Exemplo n.º 4
0
 /// <summary>
 /// Gets the public methods inherited or declared by a type
 /// </summary>
 /// <param name="t">The type to examine</param>
 /// <param name="InstanceType">The instance type classification</param>
 /// <returns></returns>
 public static IEnumerable <MethodInfo> PublicMethods(this Type t, MemberInstanceType InstanceType)
 => t.InheritedPublicMethods(InstanceType).Concat(t.DeclaredPublicMethods(InstanceType));
Exemplo n.º 5
0
 /// <summary>
 /// Gets the public methods declared by a type
 /// </summary>
 /// <param name="t">The type to examine</param>
 /// <param name="InstanceType">The instance type classification</param>
 /// <returns></returns>
 public static IEnumerable <MethodInfo> DeclaredPublicMethods(this Type t, MemberInstanceType InstanceType)
 => InstanceType.IsStaticType()
     ? t.GetMethods(BF_DeclaredPublicStatic)
     : t.GetMethods(BF_DeclaredPublicInstance);
Exemplo n.º 6
0
 /// <summary>
 /// Searches for non-public methods delcared by the type
 /// </summary>
 /// <param name="t">The type to search</param>
 /// <param name="mit">The instance type</param>
 public static IEnumerable <MethodInfo> DeclaredNonPublicMethods(this Type t,
                                                                 MemberInstanceType mit)
 => (mit == MemberInstanceType.Instance
             ? t.GetMethods(BF_DeclaredNonPublicInstance)
             : t.GetMethods(BF_DeclaredNonPublicStatic)
     );
Exemplo n.º 7
0
 public static bool IsStaticType(this MemberInstanceType mit)
 => mit == MemberInstanceType.Static;
Exemplo n.º 8
0
 /// <summary>
 /// Retrieves the non-public properties declared by a type
 /// </summary>
 /// <param name="t">The type to examine</param>
 /// <param name="mit">The instance type</param>
 /// <param name="requireSetters">Whether the existence of setters are requied to satisfy matches</param>
 public static IEnumerable <PropertyInfo> DeclaredNonPublicProperties(this Type t,
                                                                      MemberInstanceType mit, bool requireSetters = false)
 => (mit == MemberInstanceType.Instance
             ? t.GetProperties(BF_DeclaredNonPublicInstance)
             : t.GetProperties(BF_DeclaredNonPublicStatic)
     ).Where(p => !p.IsIndexer() && (requireSetters ? p.HasSetter() : true));
Exemplo n.º 9
0
 /// <summary>
 /// Retrieves the type's non-public fields
 /// </summary>
 /// <param name="src">The type to examine</param>
 public static IEnumerable <FieldInfo> PublicImmutableFields(this Type src, MemberInstanceType mit)
 => src.InheritedPublicImmutableFields(mit).Union(src.DeclaredPublicImmutableFields(mit));
Exemplo n.º 10
0
 /// <summary>
 /// Retrieves the type's public inherited immutable instance fields
 /// </summary>
 /// <param name="t"></param>
 public static IEnumerable <FieldInfo> InheritedPublicImmutableFields(this Type t, MemberInstanceType mit)
 => from f in ((
                   mit.IsStaticType()
         ? t.BaseType?.GetFields(BF_AllPublicStatic)
         : t.BaseType?.GetFields(BF_AllPublicInstance))
               ?? new FieldInfo[] { }
               )
 where f.IsInitOnly || f.IsLiteral
 select f;
Exemplo n.º 11
0
 /// <summary>
 /// Selects the public immutable  fields defined by the type
 /// </summary>
 /// <param name="t">The type to examine</param>
 public static IEnumerable <FieldInfo> DeclaredPublicImmutableFields(this Type t, MemberInstanceType mit)
 => from f in (mit.IsStaticType()
             ? t.GetFields(BF_DeclaredPublicStatic)
             : t.GetFields(BF_DeclaredPublicInstance))
     where f.IsInitOnly || f.IsLiteral
 select f;
Exemplo n.º 12
0
 public static BindingFlags GetBindingFlag(this MemberInstanceType mit)
 => mit.IsStaticType() ? BindingFlags.Static : BindingFlags.Instance;
Exemplo n.º 13
0
 /// <summary>
 /// Retrieves the type's non-public fields
 /// </summary>
 /// <param name="t"></param>
 /// <returns></returns>
 public static IEnumerable <FieldInfo> GetPublicImmutableFields(this Type t, MemberInstanceType mit)
 => t.GetInheritedPublicImmutableFields(mit).Union(t.GetDeclaredPublicImmutableFields(mit));