【发布时间】:2012-06-28 10:18:56
【问题描述】:
我试图通过从ValidationAttribute 继承来实现自定义验证属性,但发现了奇怪的事情。
我的自定义属性需要验证上下文,所以我查看了 ValidationAttribute 的 R# 反编译源并看到,我需要在自定义属性类中覆盖它:
public virtual bool RequiresValidationContext
{
get
{
return false;
}
}
现在有趣的部分 - Visual Studio 2012 不允许我这样做,告诉我没有这样的覆盖属性,尽管在运行项目时,在调试视图中我可以看到该属性。
有趣的是,我在参考路径中看到:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.ComponentModel.DataAnnotations.dll
但在 R# 反编译文件中的路径不同:
程序集位置:C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.ComponentModel.DataAnnotations.dll
因此,编译器使用与运行时不同的 dll。 因此,我尝试将引用 dll 切换到一个 R# 反编译,但看起来 VS2012 无论如何都用它的版本替换它,在项目文件中它看起来像:
<Reference Include="System.ComponentModel.DataAnnotations" />
因此,项目中没有保存路径。 如果不手动编辑项目,是否有任何解决方案?
顺便说一句,使用 4.5 NET 它可以正常工作,我的意思是它认为 RequiresValidationContext 属性是应该的。
更新:正如他们所说,图片胜过千言万语:
【问题讨论】:
标签: .net-4.0 data-annotations visual-studio-2012 .net-4.5