April_Seb4
Messages postés19Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention 2 octobre 2013
-
5 mars 2008 à 11:46
April_Seb4
Messages postés19Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention 2 octobre 2013
-
6 mars 2008 à 16:50
Bonjour
J'explique mon problème
J'utilise une API pour gérer une carte d'affichage qui demande des uint en entrée
J'ai voulu utiliser une enum qui se caractérisait de la sorte
Cela pourrait fonctionner mais je serais obligé de faire des casts dans tous mes appels de fonction
J'ai donc décidé de passer par une classe et des membres publics sous forme de constante
public class cEssai
{
public const uint Param1 = 0x3;
public const uint Param2 = 0x5;
}
Du coup, exit le cast cependant je n'arrive pas à parcourir la classe pour connaitre tous les membres publics de type uint (pour le proposer dans une combo), chose qui est assez simple avec des enums
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 5 mars 2008 à 17:26
Salut, c'est bien en passant par System.Reflection comme le montre lemmingperceval :
public static class Params
{
public const uint Param1 = 0x3;
public const uint Param2 = 0x5;
public static string[ ] GetNames( )
{
Type t = typeof( Params );
FieldInfo[ ]fields = t.GetFields(
BindingFlags.Public | BindingFlags.Static );
List< string > names = new List< string >( 10 );
foreach( FieldInfo fi in fields )
{
if ( fi.IsLiteral )
names.Add( fi.Name );
}
return names.ToArray( );
}
public static uint GetValueFromName( string name )
{
Type t = typeof( Params );
FieldInfo fi = t.GetField( name,
BindingFlags.Public | BindingFlags.Static );
if ( fi == null )
throw new ArgumentOutOfRangeException( "name" );