Crear nueva instancia a partir del tipo en C#

Muhammad Maisam Abbas 16 febrero 2024
Crear nueva instancia a partir del tipo en C#

Este tutorial discutirá los métodos para crear una nueva instancia de un tipo de datos dado en tiempo de ejecución en C#.

Cree una nueva instancia a partir del tipo con la clase Activator en C#

Si queremos crear una nueva instancia de un tipo de datos en tiempo de ejecución y no conocemos el tipo de datos, podemos usar la clase Activator y la clase Type para lograr este objetivo. La clase Activator proporciona métodos para crear instancias de objetos a partir de tipos en C#. El método Activator.CreateInstance() se utiliza para crear una instancia de un tipo especificado con el constructor que mejor se adapta al tipo especificado en C#. La clase Type representa un tipo de datos en C#. Podemos usar la clase Type para determinar el tipo de datos desconocido en este escenario. El siguiente ejemplo de código nos muestra cómo podemos crear una nueva instancia de un tipo de datos en tiempo de ejecución sin conocer el tipo de datos usando la clase Activator y la clase Type en C#.

using System;

namespace new_object_from_type {
  class Program {
    static void Main(string[] args) {
      int i = 123;
      Type t = i.GetType();
      Object n = Activator.CreateInstance(t);
      n = 15;
      Console.WriteLine(n);
    }
  }
}

Producción :

15

En el código anterior, creamos una instancia del tipo int32 en el tiempo de ejecución sin especificar el tipo de datos con el método Activator.CreateInstance() en C#. Al principio, determinamos el tipo de variable i con el método i.GetType() en C#. Luego, creamos una instancia de ese tipo con el método Activator.CreateInstance(). El método Activator.CreateInstance() encuentra automáticamente el mejor constructor para el tipo de datos y crea una instancia con él. Luego inicializamos la nueva instancia n con el valor 15 y la imprimimos.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Csharp Type