2016-09-01 7 views
1

クラスから静的な文字列を読み取るときに問題が発生しました。これは検証のためにパターンを保持しています。 デバッグすると、中括弧が角括弧に囲まれていることがわかります。 これは私のクラスである:C#FluentValidation定数が正しく動作しない

public static class ArticleConstant 
{ 
    public const int LengthOfArticleNumber = 9; 
    public static readonly string PatternArticleNumber = "^[A-Z0-9]{9}$"; 
} 

私も

public static readonly string PatternArticleNumber = "^[A-Z0-9]\{9\}$"; 
public static readonly string PatternArticleNumber = "^[A-Z0-9]{{9}}$"; 
public static readonly string PatternArticleNumber = @"^[A-Z0-9]{9}$"; 
public static readonly string PatternArticleNumber = $"^[A-Z0-9]{9}$"; 

をしようとしたが、それのどれも働きました。 これは私の実際の検証ルールです:

this.RuleFor(article => article.Number) 
      .NotEmpty() 
      .WithLocalizedMessage(() => ValidationErrorMessages.IsRequired) 
      .Length(ArticleConstant.LengthOfArticleNumber) 
      .WithLocalizedMessage(() => ValidationErrorMessages.DefinedSized) 
      .Matches(ArticleConstant.PatternArticleNumber) 
      .WithLocalizedMessage(() => ValidationErrorMessages.MustNotContainAnySpecialCharacter); 

私は試合に直接パターンを入力してください期待のようにすべての作品に機能します。

ここで何が起こっているのか教えてください。 static readonlyが何かをやっていたように、検証が失敗したように、

おかげで、 デビッド

+0

あなたは '/^[A-Z0-9] {9} $ /' –

+0

を試しましたか?中括弧は正しく解析されていますが、検証はまだ失敗します。 のような非常に簡単なパターンでさえ、 'public static readonly string PatternArticleNumber ="^[A-Z0-9] * "' は検証に失敗します。 –

答えて

0

私は

public const string PatternArticleNumber = "^[A-Z0-9]{9}$"; 

を使用して、今それを解決したが、そうです。

関連する問題