C# | Método Type.GetFields()

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;
}
Producción:

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
{ }
Producción:

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;
}
Producción:

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";
   
}
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *