Exemplo n.º 1
0
        public void SetUp()
        {
            _config             = new DefaultRuleConfiguration();
            _config.Description = "Description";
            _config.Rule        = typeof(UnCreatableRule);

            DefaultRuleConfigurationParameter param = new DefaultRuleConfigurationParameter();

            param.Name          = "arg";
            param.Value         = "argumentValue";
            param.ParameterType = ParameterType.String;

            _config.Parameters = new DefaultRuleConfigurationParameter[] { param };
        }
        /// <summary>
        /// Gets the configuration for the specified rule type
        /// </summary>
        /// <param name="aType">The rule type</param>
        /// <returns>The rule configuration</returns>
        public IRuleConfiguration GetRuleConfigurationFor(Type aType)
        {
            IRuleConfigurationFactory factory = _provider.GetRuleConfigurationFactoryFor(aType);

            if (factory == null)
            {
                throw new CalidusException("No default configuration could be loaded for rule " + aType.FullName);
            }

            //determine default and overridden configuration
            IRuleConfiguration         defaultConfig  = factory.Get(aType);
            IRuleConfigurationOverride overrideConfig = _project.GetProjectRuleConfigurationOverrides().FirstOrDefault <IRuleConfigurationOverride>(p => p.Rule.FullName.Equals(aType.FullName));

            IRuleConfiguration actualConfig = defaultConfig;

            if (overrideConfig != null)
            {
                IList <IRuleConfigurationParameter> parameters = new List <IRuleConfigurationParameter>();
                foreach (IRuleConfigurationParameter aParam in overrideConfig.Parameters)
                {
                    //get the default value
                    IRuleConfigurationParameter defaultConfigParameter = defaultConfig.Parameters.FirstOrDefault <IRuleConfigurationParameter>(p => p.Name.Equals(aParam.Name));
                    //create an overridden parameter with the overridden value
                    DefaultRuleConfigurationParameter overriddenParam = new DefaultRuleConfigurationParameter();
                    overriddenParam.Name          = defaultConfigParameter.Name;
                    overriddenParam.ParameterType = defaultConfigParameter.ParameterType;
                    overriddenParam.Value         = aParam.Value;
                    //add the overridden parameter
                    parameters.Add(overriddenParam);
                }

                actualConfig = new DefaultRuleConfiguration(aType, defaultConfig.Description, parameters);
            }

            return(actualConfig);
        }