Im utilisant la réflexion pour obtenir des données dynamiquement (Les types d'entité sont définis au moment de l'exécution). Im retournant actuellement un seul objet chaque fois que mon currentObject n'a pas de relations 1: N (via l'implémentation de réflexion de méthode générique "First"), mais je dois aussi obtenir les childs 1: N, qui sont EntityCollection < T>.EntityCollection <T> à la liste <T> par réflexion
var valoresp = getFilho(pai, filho, raizAtual);
if (valoresp == null)
return new object();
if (!filho.A_Ocorrencia_Tabela.Contains("1:N"))
{
var firstMethod = typeof(Enumerable).GetMethods().Single(method => method.Name == "First"
&& method.IsStatic && method.GetParameters().Length == 1);
var interfaceImplementation = MethodResolver.GetImplementationOfInterface(valoresp.GetType(),
firstMethod.GetParameters().First().ParameterType.GetGenericTypeDefinition());
var genericArgumentsTypes = interfaceImplementation.GetGenericArguments();
var genericMethod = firstMethod.MakeGenericMethod(new[] { genericArgumentsTypes[0] });
try
{
var resultado = genericMethod.Invoke(null, new[] { valoresp });
return resultado;
}
catch (Exception)
{
return new object();
}
}
else
{
if (valoresp.GetType().IsGenericType && (valoresp.GetType().GetGenericTypeDefinition() == typeof(EntityCollection<>)) )
{
//here is the problem:
var typeValoresp = valoresp as EntityCollection<object>;
}
}
Le fait est mon "valoresp" variable peut être 480 différents types de EntityCollection (c'est pourquoi je ne vais pas vérifier manuellement le type) (EntityCollection < table1>, EntityCollection < Tableau2> ...)
J'ai besoin d'une liste des objets enfants, mais je n'ai pas trouvé de moyen de convertir EntityCollection en liste en utilisant la réflexion.