我继承了一些使用FluentValidation 3.0.0.1的代码,在安装了.NET 4.5的机器上,我得到了可怕的System.Security.VerificationException : Operation could destabilize the runtime错误。在阅读了这篇文章:http://elegantcode.com/2012/08/23/net-4-5-operation-could-destabilize-the-runtime-yikes/之后,我将FluentValidation和FluentValidation.MVC3 nuget软件包更新为最新版本3.4.6.0。
但是..。更新后,此代码不会编译:
rules.RuleFor(x => x.Number).DisplayName("Bla bla bla"); // <-- No DisplayName method它失败是因为它在using FluentValidation.Mvc.MetadataExtensions上中继,并且这个命名空间不存在于3.4.6.0安装的DLL中。
在最新的FV中有一些MetadataExtensions等效的吗?如果不是,我如何用最新的3.4.6.0版本取代DisplayName、Scaffold、HiddenInput和类似的方法?
(我对FluentValidation完全陌生--只是偶然发现的,因为VerificationException)
发布于 2013-01-14 10:48:49
安装最新版本不是一种选择,但我已经下载了3.0.0.1源并将变化应用于AbstractValidator类。
// Func<CascadeMode> cascadeMode = () => ValidatorOptions.CascadeMode; // Deleted
static Func<CascadeMode> s_cascadeMode = () => ValidatorOptions.CascadeMode; // Added
Func<CascadeMode> cascadeMode = s_cascadeMode; // Added将原来的3.0.0.1替换为补丁版本之后,应用程序将在没有VerificationException的情况下启动。
发布于 2013-01-09 11:31:04
由于您使用的是FluentValidation新版本,所以您必须使用WithMessage而不是像下面这样显示
RuleFor(x => x.city).NotNull().WithMessage("City is required"); https://stackoverflow.com/questions/14195387
复制相似问题