Je lis le contenu du fichier et prends la chaîne à l'emplacement exact comme celui-ci
string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);
La sortie sera toujours soit Ok
ou Err
De l'autre côté j'ai MyObject
qui ont ContentEnum
comme ceci
public class MyObject
{
public enum ContentEnum { Ok = 1, Err = 2 };
public ContentEnum Content { get; set; }
}
Maintenant, côté client, je veux utiliser un code comme celui-ci (pour convertir ma chaîne fileContentMessage
en Content
property)
string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);
MyObject myObj = new MyObject ()
{
Content = /// ///,
};
Utilisez Enum.Parse()
.
var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);
En plus, vous pouvez prendre le Enum.Parse
réponses déjà fournies et insérez-les dans une méthode statique facile à utiliser dans une classe d'assistance.
public static T ParseEnum<T>(string value)
{
return (T)Enum.Parse(typeof(T), value, ignoreCase: true);
}
Et utilisez-le comme suit:
{
Content = ParseEnum<ContentEnum>(fileContentMessage);
};
Particulièrement utile si vous avez beaucoup d’énumérations (différentes) à analyser.
.NET 4.0+ a un générique Enum.TryParse
ContentEnum content;
Enum.TryParse(fileContentMessage, out content);
Jetez un coup d'œil à l'utilisation de quelque chose comme
Convertit la représentation sous forme de chaîne du nom ou de la valeur numérique d'une ou de plusieurs constantes énumérées en un objet énuméré équivalent. Un paramètre spécifie si l'opération est sensible à la casse. La valeur de retour indique si la conversion a réussi.
ou
Convertit la représentation sous forme de chaîne du nom ou de la valeur numérique d'une ou de plusieurs constantes énumérées en un objet énuméré équivalent.