Je suis en train de créer une liste générique d'un type spécifique qui est récupéré d'ailleurs:utilisant C# type comme générique
Type listType; // Passed in to function, could be anything
var list = _service.GetAll<listType>();
Cependant, je reçois une erreur de construction de:
The type or namespace name 'listType' could not be found (are you missing a using directive or an assembly reference?)
Est Est-ce possible ou suis-je en train de mettre le pied sur le territoire dynamique C# 4? En arrière-plan: Je souhaite charger automatiquement toutes les listes avec les données du référentiel. Le code ci-dessous a passé un modèle de formulaire dont les propriétés sont itérées pour tout IEnum (où T hérite de DomainEntity). Je veux remplir la liste avec des objets du type de la liste faite à partir du référentiel.
public void LoadLists(object model)
{
foreach (var property in model.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.SetProperty))
{
if (IsEnumerableOfNssEntities(property.PropertyType))
{
var listType = property.PropertyType.GetGenericArguments()[0];
var list = _repository.Query<listType>().ToList();
property.SetValue(model, list, null);
}
}
}
Ouais, je pensais que cela pourrait être le cas. Je consomme la liste d'une méthode() ailleurs dans le système, donc je ne peux pas créer la liste à partir de zéro. Merci de votre aide! –
Vous pouvez également appeler une méthode générique en utilisant la réflexion, mais vous aurez toujours les mêmes problèmes avec le résultat. Consultez cet article sur l'invocation de méthode générique dynamique: http://www.codeproject.com/KB/dotnet/InvokeGenericMethods.aspx – max