Example #1
0
        private static void GetChildPrivateProperties(IList <PropertyInfo> initialProperties, Type targetType, BindingFlags bindingAttr)
        {
            if ((bindingAttr & BindingFlags.NonPublic) == BindingFlags.Default)
            {
                return;
            }
            BindingFlags bindingAttr1 = RemoveFlag(bindingAttr, BindingFlags.Public);

            while ((targetType = TypeExtensions.BaseType(targetType)) != null)
            {
                foreach (PropertyInfo propertyInfo in targetType.GetProperties(bindingAttr1))
                {
                    PropertyInfo nonPublicProperty = propertyInfo;
                    int          index             = CollectionUtils.IndexOf(initialProperties, p => p.Name == nonPublicProperty.Name);
                    if (index == -1)
                    {
                        initialProperties.Add(nonPublicProperty);
                    }
                    else
                    {
                        initialProperties[index] = nonPublicProperty;
                    }
                }
            }
        }
Example #2
0
        private static void GetChildPrivateFields(IList <MemberInfo> initialFields, Type targetType, BindingFlags bindingAttr)
        {
            if ((bindingAttr & BindingFlags.NonPublic) == BindingFlags.Default)
            {
                return;
            }
            BindingFlags bindingAttr1 = RemoveFlag(bindingAttr, BindingFlags.Public);

            while ((targetType = TypeExtensions.BaseType(targetType)) != null)
            {
                IEnumerable <MemberInfo> collection = Enumerable.Where(targetType.GetFields(bindingAttr1), f => f.IsPrivate);
                CollectionUtils.AddRange(initialFields, collection);
            }
        }
Example #3
0
 private static bool InheritsGenericDefinitionInternal(Type currentType, Type genericClassDefinition, out Type implementingType)
 {
     if (TypeExtensions.IsGenericType(currentType))
     {
         Type genericTypeDefinition = currentType.GetGenericTypeDefinition();
         if (genericClassDefinition == genericTypeDefinition)
         {
             implementingType = currentType;
             return(true);
         }
     }
     if (!(TypeExtensions.BaseType(currentType) == null))
     {
         return(InheritsGenericDefinitionInternal(TypeExtensions.BaseType(currentType), genericClassDefinition, out implementingType));
     }
     implementingType = null;
     return(false);
 }