Ajouter Enum Drapeaux à un Paramètre dans une Boucle (au niveau du Bit Ajout à la fin)
En C#, je suis en train de "ajouter" des valeurs à un paramètre qui accepte énumérés drapeaux. Je peux le faire sur une seule ligne avec un opérateur bit à bit "|", mais je ne peux pas me joindre à l'paramètre dans une boucle.
J'ai le texte suivant Enum spécifié comme des Drapeaux.
[Flags]
public enum ProtectionOptions
{
NoPrevention = 0,
PreventEverything = 1,
PreventCopying = 2,
PreventPrinting = 4,
PrintOnlyLowResolution = 8
}
Maintenant, je peux facilement utiliser le code suivant pour ajouter des valeurs d'indicateur pour le paramètre:
myObj.Protection = ProtectionOptions.PreventEverything | ProtectionOptions.PrintOnlyLowResolution;
Mais, ce que je veux faire, c'est d'obtenir une liste des options de protection d'un fichier CSV chaîne (à partir du Web.Config), boucle à travers eux et de les ajouter à mon myObj.ProtectionOptions de la propriété. Je ne sais pas comment faire cela dans une boucle sans l'aide d'un OU binaire "|" de l'opérateur. Voici ce que je suis désireux de faire:
string protectionOptionsString = "NoPrevention, PreventPrinting";
string[] protectionOptions = protectionOptionsString.Split(',');
foreach (string protectionOption in protectionOptions)
{
myObj.Protection += (ProtectionOptions) Enum.Parse(typeof (ProtectionOptions), protectionOption.Trim());
}
Sur le plan conceptuel, c'est ce que je veux, mais je ne peux pas "+=" les valeurs dans la boucle pour le paramètre.
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de split. Enum.Analyser est capable d'analyser plusieurs valeurs si vous utilisez le [Drapeaux] l'attribut dans l'enum définition, qui vous a fait. Juste analyser et utiliser l' | opérateur= pour "ajouter" des drapeaux.
Pour plus d'informations sur les énumérations de bits indicateurs et les méthodes du Système.Les énumérations, voici un lien direct vers mon tuto: http://motti.me/s1D
Voici un lien vers le tutoriel complet: http://motti.me/s0
J'espère que cette aide.
Utiliser le
|=
opérateur.Pourquoi ne pouvez-vous pas le faire?
Alternativement, vous pouvez stocker l'équivalent entier de l'énumération
((Int32)myObj.Protection)
et de le charger comme un entier.Vous souhaitez utiliser le composé OU d'un opérateur d'affectation.