Esempio n. 1
0
        /// <summary>
        /// Gets the feature set.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="featureSetType">Type of the feature set.</param>
        /// <returns>The <see cref="FeatureSet"/></returns>
        public static FeatureSet GetFeatureSet(User user, FeatureSetType featureSetType)
        {
            var features = new List <IFeature>();

            foreach (Type type in FeatureSets[featureSetType])
            {
                if (!user.FeatureCache.ContainsKey(type))
                {
                    IFeature feature = (IFeature)Activator.CreateInstance(type);
                    user.FeatureCache[type] = feature;

                    feature.Configure();

                    var configurable = feature as IConfigurableFeature;
                    if (configurable != null)
                    {
                        configurable.Configure(user);
                    }
                }

                features.Add(user.FeatureCache[type]);
            }

            return(new FeatureSet {
                Name = featureSetType.ToString(), Features = features.ToList()
            });
        }