.NET, Architecture, ALM, Cloud
public static class StringExtension
{
public static T EnumParse<T>(this string value)
where T : struct
{
return (T) EnumParse<T>(value, false);
}
public static T EnumParse<T>(this string value, bool ignoreCase)
where T : struct
{
return (T)Enum.Parse(typeof(T), value, ignoreCase);
}
}
Et pour l'utiliser, il vous suffira simplement de faire appel à la méthode "EnumParse<T>" à partir de vos types "string" :
string value = "Enum1";
MyEnum myEnum = value.EnumParse<MyEnum>();
Le compilateur C# pour transformer votre méthode en méthode d'extension se contentera de positionner l'attribut "System.Runtime.CompilerServices.Extension" au-dessus de chaque méthode où le mot clef "this" se trouve.
Restez tout de même vigilant dans l'utilisation de vos méthodes d'extensions. Une des plus grosses problématiques dans les méthodes d'extensions réside dans le fait de réaliser une méthode "EnumParse<T>" et plus tard de se retrouver avec le framework 4.0 avec la même méthode. Du coup ca sera la méthode du framework qui sera appelé et non votre méthode d'extension. Pour éviter cela, n'hésitez pas à préfixer vos méthodes d'extensions.
Nous verrons dans des prochains post l'utilisation des méthodes d'extensions au sein de Linq ainsi que la possibilité de surcharger vos méthodes d'extensions.