2012-09-18 10 views
11

Tengo una clase de constantes de cadena, ¿cómo puedo recorrer para obtener la cadena y completar un cuadro de lista?¿Ir a través de las propiedades de la clase estática para completar la lista?

static class Fields 
{ 
    static readonly string FirstName = "FirstName"; 
    static readonly string LastName = "LastName"; 
    static readonly string Grade = "Grade"; 
    static readonly string StudentID1 = "StudentID"; 
    static readonly string StudentID2 = "SASINumber"; 
} 

public partial class SchoolSelect : Form 
{ 
    public SchoolSelect() 
    { 
     InitializeComponent(); 

     //SNIP 

     // populate fields 
     //Fields myFields = new Fields(); // <-- Cant do this 
     i = 0; 
     foreach (string field in Fields) // ??? 
     { 
      fieldsBox.Items.Insert(i, Fields ??? 
     } 
    } 

No puedo crear una nueva instancia de Campos porque es una clase estática. ¿Cómo puedo obtener todos los campos en el cuadro de lista sin insertar manualmente cada uno?

Respuesta

17

Reflexión intento con algo como esto:

(versión actualizada)

 Type type = typeof(Fields); // MyClass is static class with static properties 
     foreach (var p in type.GetFields(System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic)) 
     { 
      var v = p.GetValue(null); // static classes cannot be instanced, so use null... 
      //do something with v 
      Console.WriteLine(v.ToString()); 
     } 
+3

Debido a que usted está buscando para los campos (en la pregunta) y no propiedades, se debe utilizar type.GetFields(), y tal vez incluso agregue un BindingFlag como parámetro para el método, como BindingFlags.Static (no estoy seguro del nombre exacto) –

+0

@Chery: Aaahh .... + 1 – Cybermaxs

+0

¡Funciona ahora, gracias! – pdizz

Cuestiones relacionadas