El método Type.GetFields() se utiliza para obtener los campos del tipo actual. Hay 2 métodos en la lista de sobrecarga de este método de la siguiente manera:
- Método GetFields()
- Método GetFields(BindingFlags)
Método GetFields()
Este método se utiliza para devolver todos los campos públicos del Tipo actual.
Sintaxis: public System.Reflection.FieldInfo[] GetFields();
Valor devuelto: este método devuelve una array de objetos FieldInfo que representan todos los campos públicos definidos para el tipo actual. O bien, una array vacía de tipo FieldInfo, si no se definen campos públicos para el Tipo actual.
Los siguientes programas ilustran el uso del método Type.GetFields() :
Ejemplo 1:
// C# program to demonstrate the // Type.GetFields() Method using System; using System.Globalization; using System.Reflection; class GFG { // Main Method public static void Main() { // Declaring and initializing object of Type Type objType = typeof(Student); // try-catch block for handling Exception try { // Getting array of Fields by // using GetField() Method FieldInfo[] info = objType.GetFields(BindingFlags.Public | BindingFlags.Static); // Display the Result Console.Write("Fields of current type is as Follow: "); for (int i = 0; i < info.Length; i++) Console.WriteLine(" {0}", info[i]); } // catch ArgumentNullException here catch (ArgumentNullException e) { Console.Write("name is null."); Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } } // Defining class Student public class Student { public string Name = "Rahul"; public string Dept = "Electrical"; public int Roll = 10; public static int id = 02; }
Fields of current type is as Follow: System.Int32 id
Ejemplo 2: si no se define ningún campo público
// C# program to demonstrate the // Type.GetFields(String) Method using System; using System.Globalization; using System.Reflection; class GFG { // Main Method public static void Main() { // Declaring and initializing object of Type Type objType = typeof(Student); // try-catch block for handling Exception try { // Getting array of Fields by // using GetField() Method FieldInfo[] info = objType.GetFields(); // Display the Result Console.Write("Public Fields of current type is as follow: "); if (info.Length != 0) { for (int i = 0; i < info.Length; i++) Console.WriteLine(" {0}", info[i]); } else Console.WriteLine("No public fields are defined for the current Type."); } // catch ArgumentNullException here catch (ArgumentNullException e) { Console.Write("name is null."); Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } } // Defining class Student public class Student { }
Public Fields of current type is as follow: No public fields are defined for the current Type.
Método GetFields(BindingFlags)
Este método se usa para buscar los campos definidos para el Tipo actual, usando el enlace especificado cuando se anula en una clase derivada, restricciones.
Sintaxis: public abstract System.Reflection.FieldInfo[] GetFields (System.Reflection.BindingFlags bindingAttr);
Aquí, bindingAttr es una máscara de bits compuesta por uno o más BindingFlags que especifican cómo se realiza la búsqueda o Zero, para devolver un valor nulo.Valor devuelto: este método devuelve una array de objetos FieldInfo que representan todos los campos definidos para el tipo actual que coinciden con las restricciones de enlace especificadas. O bien, una array vacía de tipo FieldInfo, si no hay campos definidos para el Tipo actual, o si ninguno de los campos definidos coincide con las restricciones vinculantes.
Los siguientes programas ilustran el uso del método mencionado anteriormente:
Ejemplo 1:
// C# program to demonstrate the // Type.GetField(String) // Method using System; using System.Globalization; using System.Reflection; class GFG { // Main Method public static void Main() { // Declaring and initializing object of Type Type objType = typeof(Student); // Creating try-catch block for handling Exception try { // You must specify either BindingFlags.Instance or BindingFlags.Static // and Specify BindingFlags.Public // to include public fields in the search. BindingFlags battr = BindingFlags.Public | BindingFlags.Instance; // Getting FieldInfo by // using GetField() Method FieldInfo info = objType.GetField("Name", battr); // Display the Result Console.WriteLine("FieldInfo is - {0}",info); } // catch ArgumentNullException here catch (ArgumentNullException e) { Console.Write("name is null."); Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } } // Defining class Student public class Student { public string Name = "Rahul"; public string Dept = "Electrical"; public int Roll = 10; }
FieldInfo is - System.String Name
Ejemplo 2: para ArgumentNullException
// C# program to demonstrate the // Type.GetFields(String) // Method using System; using System.Globalization; using System.Reflection; class GFG { // Main Method public static void Main() { // Declaring and initializing object of Type Type objType = typeof(Book); // Creating try-catch block for handling Exception try { // Getting array of Fields by // using GetField() Method FieldInfo[] info = objType.GetFields(BindingFlags.NonPublic | BindingFlags.Instance); // Display the Result Console.WriteLine("Fields of current type is as follow :-"); for(int i=0; i<info.Length; i++) Console.WriteLine(" {0}",info[i]); } // catch ArgumentNullException here catch (ArgumentNullException e) { Console.Write("name is null."); Console.Write("Exception Thrown: "); Console.Write("{0}", e.GetType(), e.Message); } } } // Defining class Student public class Book { public string Name = "Element of Physics"; public string Author = "R.S. Agrwal"; public static int Price = 500; private string metadata = "djdieeiie"; }
FieldInfo is - System.String Name
Referencia:
Publicación traducida automáticamente
Artículo escrito por RohitPrasad3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA