2009-08-21 3 views

Répondre

5

EDIT: Il se trouve qu'ils sont des propriétés plutôt que les champs, donc:

foreach (PropertyInfo property in typeof(Properties.Resources).GetProperties 
    (BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)) 
{ 
    Console.WriteLine("{0}: {1}", property.Name, property.GetValue(null, null)); 
} 

Notez que cela aussi vous donner les propriétés « ResourceManager » et « Culture ».

+0

n'est-il pas plus lent que d'accéder directement aux ressources via GetManifestResource *? –

+0

Ils font des choses différentes. D'une part, vous pouvez avoir du contenu dans l'assembly qui n'est pas dans 'Properties.Resources', et d'autre part cela vous donne des ressources individuelles au lieu de resource * files *. Si vous avez deux ressources de chaîne, par exemple, elles peuvent toutes deux se trouver dans le même fichier de ressources. Trouver les noms de ressources signifie charger le fichier puis demander les noms dans ce fichier, etc. –

+0

En d'autres termes, cette réponse répond à la question spécifiquement demandé :) –

2

Essayez Assembly.GetManifestResourceNames(). Appelez comme ceci:

Assembly.GetExecutingAssembly().GetManifestResourceNames() 

Edit: Pour obtenir effectivement l'appel de ressources Assembly.GetManifestResouceStream() ou pour voir plus de détails Assembly.GetManifestResourceInfo() utiliser.

Questions connexes