覆盖Nuget System.ComponentModel.Annotations

时间:2017-10-16 07:18:49

标签: c# .net regex .net-core

我正在使用Nuget包System.ComponentModel.Annotations进行数据验证。现在我也想通过正则表达式添加验证。问题是,我想添加RegexOptionsthis threadRegularExpressionAttribute.IsValid()的nuget包版本不像.NET Framework DLL那样返回bool,而是返回ValidationResult,它似乎没有as因为我无法找到改变验证结果的任何方法,所以直接采用覆盖的方法。我之所以使用Nuget软件包而不是Framework提供的版本,是因为它需要支持Nuget软件包支持的.NET 4.5和.NET Standard 1.1。那么如何以任何有意义的方式覆盖RegularExpressionAttribute.IsValid()

1 个答案:

答案 0 :(得分:2)

我通过引用.NETStandard 1.3而不是.NETStandard 1.1解决了这个问题,因为该版本添加了RegularExpressionAttribute.IsValid()的覆盖,除了返回bool的{​​{1}}之外还返回ValidationResult 。但是由于.NET Framework 4.5只实现了.NETStandard 1.1,我不得不针对多个框架,导致对project.csproj进行编辑,最终看起来像这样:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard1.3;net45</TargetFrameworks>
    <RootNamespace>Foobar</RootNamespace>
    <AssemblyName>Foobar</AssemblyName>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="System.ComponentModel.Annotations" Version="4.4.0" />
  </ItemGroup>

</Project>