static Type GetPropertyType(ProfileGroupSettings pgs, ProfilePropertySettings pps)
        {
            Type type = HttpApplication.LoadType(pps.Type);

            if (type != null)
            {
                return(type);
            }

            Type profileType = null;

            if (pgs == null)
            {
                profileType = ProfileParser.GetProfileCommonType(HttpContext.Current);
            }
            else
            {
                profileType = ProfileParser.GetProfileGroupType(HttpContext.Current, pgs.Name);
            }

            if (profileType == null)
            {
                return(null);
            }

            PropertyInfo pi = profileType.GetProperty(pps.Name);

            if (pi != null)
            {
                return(pi.PropertyType);
            }

            return(null);
        }
        public ProfileGroupBase GetProfileGroup(string groupName)
        {
            ProfileGroupBase group     = null;
            Type             groupType = ProfileParser.GetProfileGroupType(HttpContext.Current, groupName);

            if (groupType != null)
            {
                group = (ProfileGroupBase)Activator.CreateInstance(groupType);
            }
            else
            {
                throw new ProviderException("Group '" + groupName + "' not found");
            }

            group.Init(this, groupName);
            return(group);
        }
        public static ProfileBase Create(string username, bool isAuthenticated)
        {
            ProfileBase profile     = null;
            Type        profileType = ProfileParser.GetProfileCommonType(HttpContext.Current);

            if (profileType != null)
            {
                profile = (ProfileBase)Activator.CreateInstance(profileType);
            }
            else
            {
                profile = (ProfileBase) new DefaultProfile();
            }

            profile.Initialize(username, isAuthenticated);
            return(profile);
        }
        static void InitProperties()
        {
            SettingsPropertyCollection properties = new SettingsPropertyCollection();

            ProfileSection config = (ProfileSection)WebConfigurationManager.GetSection("system.web/profile");
            RootProfilePropertySettingsCollection ps = config.PropertySettings;

            for (int i = 0; i < ps.GroupSettings.Count; i++)
            {
                ProfileGroupSettings pgs = ps.GroupSettings [i];
                ProfilePropertySettingsCollection ppsc = pgs.PropertySettings;

                for (int s = 0; s < ppsc.Count; s++)
                {
                    SettingsProperty settingsProperty = CreateSettingsProperty(pgs, ppsc [s]);
                    ValidateProperty(settingsProperty, ppsc [s].ElementInformation);
                    properties.Add(settingsProperty);
                }
            }

            for (int s = 0; s < ps.Count; s++)
            {
                SettingsProperty settingsProperty = CreateSettingsProperty(null, ps [s]);
                ValidateProperty(settingsProperty, ps [s].ElementInformation);
                properties.Add(settingsProperty);
            }

            if (config.Inherits.Length > 0)
            {
                Type profileType = ProfileParser.GetProfileCommonType(HttpContext.Current);
                if (profileType != null)
                {
                    Type properiesType = profileType.BaseType;
                    for (; ;)
                    {
                        PropertyInfo [] pi = properiesType.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly);
                        if (pi.Length > 0)
                        {
                            for (int i = 0; i < pi.Length; i++)
                            {
                                properties.Add(CreateSettingsProperty(pi [i]));
                            }
                        }

                        if (properiesType.BaseType == null ||
                            properiesType.BaseType == typeof(ProfileBase))
                        {
                            break;
                        }

                        properiesType = properiesType.BaseType;
                    }
                }
            }

            properties.SetReadOnly();
            lock (Profiles_SettingsPropertyCollection) {
                if (_properties == null)
                {
                    _properties = properties;
                }
            }
        }