Beispiel #1
0
        private static List <Microsoft.Cci.ErrorEventArgs> ValidateAssembly(HostEnvironment host, IAssembly assembly)
        {
            Contract.Requires(host != null);
            Contract.Ensures(Contract.Result <List <Microsoft.Cci.ErrorEventArgs> >() != null);

            List <Microsoft.Cci.ErrorEventArgs> errorEvents = new List <Microsoft.Cci.ErrorEventArgs>();

            host.Errors += (object sender, Microsoft.Cci.ErrorEventArgs e) => { lock (errorEvents) errorEvents.Add(e); }; // MB: without lock I'm getting exceptions
            var mv = new MetadataValidator(host);

            mv.Validate(assembly);
            return(errorEvents);
        }
        private void resetValidationItems(MetadataValidator metadataValidator)
        {
            ValidationItems.Clear();

            if (metadataValidator.ValidationItems == null) // metadataValidator.IsValid
            {
                return;
            }

            foreach (var validationItem in metadataValidator.ValidationItems)
            {
                //if (!((MetadataValidationError)validationItem).Definition.IsReadOnly)
                ValidationItems.Add(validationItem);
            }

            RaisePropertyChanged(() => ValidationItems);
        }
Beispiel #3
0
        /// <summary>
        /// Use this method to automatically apply model validation,
        /// when calling actions that require it.
        ///
        /// By default, model validation is NOT executed if actions
        /// are called outside the MVC context, e.g. in testing. To
        /// make sure that validation is executed, call this method
        /// and let it call the action. Do not call it directly.
        /// </summary>
        public static ActionResult CallWithModelValidation <TC, TR, TM>(this TC controller, Func <TC, TR> action, TM model)
            where TC : Controller
            where TR : ActionResult
            where TM : class
        {
            //Perform model validation
            var validator = new MetadataValidator(model);

            //Add each model error to the model state
            foreach (var error in validator.ValidationErrors)
            {
                var defaultKey = "N/A" + new Random().Next();
                var memberName = error.MemberNames.FirstOrDefault() ?? defaultKey;
                controller.ModelState.AddModelError(memberName, error.ErrorMessage);
            }

            //Return the action
            return(action(controller));
        }