Ho una raccolta di diversi attributi che dovrebbero essere sempre utilizzati insieme per l'interfaccia utente e la convalida. Ad esempio per un campo valuta, devo aggiungere un suggerimento UI, logica di convalida e formattazione dello schermo. Di conseguenza, la mia classe sembra molto affollata.Combina gli attributi di annotazione dati
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; }
}
Esiste un modo per creare un attributo [Currency]
che combina le funzionalità di tutti questi attributi per essere un attributo semplice? Il mio obiettivo sarebbe quello di creare la seguente:
public class Model
{
[Currency] public double? Cost { get; set; }
[Currency] public double? Profit { get; set; }
}
EDIT: Per chiarire, ho cercato di creare un attributo personalizzato, ma non ci sono interfacce esposte che mi permettesse di implementare la funzionalità di questi attributi diversi. Posso eseguire la sottoclasse di ValidationAttribute, ma in questo caso non riesco nemmeno a sottoclasse UIHintAttribute. Qualche altra potenziale soluzione mi manca?
interessante domanda. Questo è il territorio @DarinDimitrov –
Suppongo che tu abbia bisogno di qualcosa come Postsharp e di utilizzare AOP. –
Sono curioso di sapere come si farebbe. Mi piacerebbe essere in grado di farlo – amhed