Dès que vous ajoutez un fichier ressource .RESX à votre projet, Visual Studio crée un Designer.cs portant le même nom, en créant une classe pour vous avec tous les éléments de la ressource comme propriétés statiques. Vous pouvez voir tous les noms de la ressource lorsque vous tapez le point dans l'éditeur après avoir tapé le nom du fichier ressource.
Vous pouvez également utiliser la réflexion pour parcourir ces noms en boucle.
Type resourceType = Type.GetType("AssemblyName.Resource1");
PropertyInfo[] resourceProps = resourceType.GetProperties(
BindingFlags.NonPublic |
BindingFlags.Static |
BindingFlags.GetProperty);
foreach (PropertyInfo info in resourceProps)
{
string name = info.Name;
object value = info.GetValue(null, null); // object can be an image, a string whatever
// do something with name and value
}
Cette méthode n'est évidemment utilisable que lorsque le fichier RESX est dans la portée de l'assemblage ou du projet en cours. Sinon, utilisez la méthode fournie par "pulse".
L'avantage de cette méthode est que vous appelez les propriétés réelles qui ont été fournies pour vous, en tenant compte de toute localisation si vous le souhaitez. Cependant, elle est plutôt redondante, car vous devriez normalement utiliser la méthode directe et sûre pour appeler les propriétés de vos ressources.
2 votes
Pouvez-vous préciser si le fichier RESX est interne à votre projet ou si vous voulez (ou devez) lire un fichier RESX distinct ou lire le RESX d'une autre assemblée ?