¿Hay alguna manera de recorrer todos los recursos en un .resx
archivo en C #?
c#
.net
embedded-resource
notario público.
fuente
fuente
Respuestas:
Siempre debe usar el administrador de recursos y no leer los archivos directamente para garantizar que se tenga en cuenta la globalización.
...
fuente
ResourceManager MyResourceClass = new ResourceManager("Resources.ResourceFileName", System.Reflection.Assembly.Load("App_GlobalResources"));
Blogueado sobre esto en mi blog :) La versión corta es, para encontrar los nombres completos de los recursos (a menos que ya los conozca):
Para usarlos todos para algo:
Para usar recursos en ensamblajes distintos al ejecutante, solo obtendría un objeto de ensamblaje diferente utilizando algunos de los otros métodos estáticos de la
Assembly
clase. Espero eso ayude :)fuente
Utilice la clase ResXResourceReader
fuente
ver enlace: ejemplo de microsoft
fuente
System.Windows.Forms
ensamblado y no se agrega automáticamente si está utilizando una aplicación MVCEn el momento en que agrega un archivo .RESX de recursos a su proyecto, Visual Studio creará un Designer.cs con el mismo nombre, creando una clase para usted con todos los elementos del recurso como propiedades estáticas. Puede ver todos los nombres del recurso cuando escribe el punto en el editor después de escribir el nombre del archivo de recursos.
Alternativamente, puede usar la reflexión para recorrer estos nombres.
Obviamente, este método solo se puede usar cuando el archivo RESX está dentro del alcance del ensamblaje o proyecto actual. De lo contrario, utilice el método proporcionado por "pulso".
La ventaja de este método es que llama a las propiedades reales que se le han proporcionado, teniendo en cuenta cualquier localización si lo desea. Sin embargo, es bastante redundante, ya que normalmente debe usar el método directo seguro de tipo para llamar a las propiedades de sus recursos.
fuente
Puede usar ResourceManager.GetResourceSet .
fuente
Si desea usar LINQ, use
resourceSet.OfType<DictionaryEntry>()
. El uso de LINQ le permite, por ejemplo, seleccionar recursos en función de su índice (int) en lugar de la clave (cadena):fuente
Con el paquete nuget
System.Resources.ResourceManager
(v4.3.0)ResourceSet
yResourceManager.GetResourceSet
no están disponibles.Usando el
ResourceReader
, como sugiere esta publicación: " C # - No se puede obtener una cadena de ResourceManager (del ensamblaje satelital) "Todavía es posible leer la clave / valores del archivo de recursos.
fuente
Usando LINQ to SQL :
fuente
El bucle de lectura simple usa este código
fuente