1

現在、mvcアプリケーション用に独自のValidationAttributeを作成しています。

次のValidationAttributeコードがあります。

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Class | AttributeTargets.Parameter, AllowMultiple = false)] 
public class RecordAttribute: ValidationAttribute
{

   public UniqueDataRecordAttribute(string primaryKeyProperty)
   {

   }
}

プライマリプロパティのフィールド名を文字列として属性に渡し、sone検証を行います。例えば:

[RecordAttribute("CustomerID")]
public class CustomerMetaData
{


}

これは私にとってはうまくいきますが、主キーの名前が変わると問題が発生します。

主キー属性を含む列挙型を作成しました。しかし、私がそれを渡そうとすると、コンパイラは私に言っています:

属性引数は、定数式、typeof式、または属性パラメータータイプの配列作成式である必要があります。

私もこのアプローチを試しました:C#で列挙型を文字列に関連付けるが、効果は同じです。

列挙型(または他のコンパイルされた値)を属性に渡す機会はありますか?

ありがとうございました

4

1 に答える 1

0

あなたはこのようなことをしようとしていますか?

[RecordAttribute(Keys.CustomerID.ToString())] 
public class CustomerMetaData 
{ 
}

Keys.CustomerID.ToString()によって返される文字列は定数ではないため、これは機能しません。

列挙型の代わりに、const文字列フィールドの静的クラスを使用できますか?

static class Keys {
  public const string CustomerID = "CustomerID";
}

次に、これは機能します:

[RecordAttribute(Keys.CustomerID)] 
public class CustomerMetaData 
{ 
}
于 2012-04-26T07:09:38.943 に答える