Ultimamente mi sono ritrovato a dover fronteggiare un problema che, in realtà, è abbastanza comune.
Immaginiamo di avere un’area generica (diciamo un div) all’interno del quale restituiamo all’utente un messaggio a seconda della specifica funzionalità che deve eseguire.
Nell’ottica del riutilizzo del codice, potrebbe essere utile cambiare il messaggio visualizzato a seconda del punto dal quale si giunge.
Per questa ragione mi son chiesto se esistesse un modo per poter associare ad un enums uno specifico valore stringa. L’enums è sicuramente utile per individuare il punto dal quale si proviene, ma da solo non è sufficientemente potente per fornire un feedback all’utente.
Mai re-inventare la ruota, quando google ti può dare una mano ![]()
Stefan Sedich fornisce un’ottima soluzione al mio problema.
1. Definire un nuovo attributo custom di classe;
public class StringValueAttribute : Attribute { public string StringValue { get; set; } public StringValueAttribute(string value) { this.StringValue = value; } }
2. Creare un extension method il cui obiettivo sarà quello di recuperare il valore stringa dell’attributo StringValue associato ai singoli enums;
public static class StringValueExtension { public static string GetStringValue(this Enum value) { type = value.GetType(); fieldInfo = type.GetField(value.ToString()); StringValueAttribute[] attribs = fieldInfo.GetCustomAttributes( typeof(StringValueAttribute), false) as StringValueAttribute[]; return attribs.Length > 0 ? attribs[0].StringValue : null; } }
3. Creare un enums con associato un attributo StringValue.
public enum Test : int { [StringValue("a")] EnumsA = 1, [StringValue("b")] EnumsB = 2 }


















Il sito rai.tv su android: problemi con silverlight
RFOPortal online!
Superenalotto: e se fosse truccato?
Sony: pessima gestione ecommerce