UI と検証のために常に一緒に使用する必要があるいくつかの属性のコレクションがあります。たとえば、通貨フィールドの場合、UI ヒント、検証ロジック、および表示形式を追加する必要があります。その結果、私のクラスはとても混雑しているように見えます。
public class Model
{
[UIHint("Currency")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:C}")]
[CustomRegularExpression(Currency.ValidationPattern, OnlyOnClientSide = true)]
[SetMetaDataForCustomModelBinder("Currency")]
public double? Cost { get; set; }
[UIHint("Currency")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:C}")]
[CustomRegularExpression(Currency.ValidationPattern, OnlyOnClientSide = true)]
[SetMetaDataForCustomModelBinder("Currency")]
public double? Profit { get; set; }
}
[Currency]
これらすべての属性の機能を組み合わせて 1 つの単純な属性にする属性を作成する方法はありますか? 私の目標は、次のものを作成することです。
public class Model
{
[Currency] public double? Cost { get; set; }
[Currency] public double? Profit { get; set; }
}
編集:明確にするために、カスタム属性を作成しようとしましたが、これらのさまざまな属性の機能を実装できるようにするインターフェイスは公開されていません。ValidationAttribute をサブクラス化できますが、UIHintAttribute もサブクラス化できません。私が見逃している他の潜在的な解決策はありますか?