HI, Tengo un requisito para crear una instancia para el objeto list en tiempo de ejecución mediante la reflexión. Por ejemplo tengo 2 clases como a continuación,Cómo crear la instancia de la lista <T> en el archivo C# utilizando Reflection
class Class1
{
List<Class2> class2List;
public List<Class2> Class2List
{
get;set;
}
}
class Class2
{
public string mem1;
public string mem2;
}
después de crear la instancia de Class1
en tiempo de ejecución en otra clase Class3
, quiero asignar valores a todas las propiedades de la clase. En este caso, Class2List
es una propiedad de List<Class2>
. En Runtime, no sé el tipo de clase List<Class2>
. ¿Cómo puedo inicializar la propiedad, es decir, List<Class2>
dentro de class3 en tiempo de ejecución?
Cualquier sugerencia son muy apreciadas ...
En lugar de crear matrices de longitud cero para las llamadas GetConstructor e Invoke, puede usar 'Type.EmptyTypes' para GetConstructor y pasar' null' a Invoke. Además, deberá convertir el objeto devuelto por Invoke: 'var listInstance = (IList) (typeof (List <>) .MakeGenericType (listElemType) .GetConstructor (new Type [0]) .Invoke (new object [0])); ' – phoog
gracias - Sabía sobre' Type.EmptyTypes' y 'null' sobre' Invoke', pero simplemente lo estaba superando muy rápido ... Sin embargo, el molde que faltaba era porque pensaba agregar el IList poco después de haber escrito el código! Se actualizará. –
justo como lo que estoy buscando – ArhiChief