Je suis coincé à l'aide des génériques avec IEnumerableutilisation correcte de IEnumerable <T>
J'ai une classe de base de
public class DirectoryObject //Microsoft.Azure.ActiveDirectory.GraphClient
{
...
}
où il y a deux classes dérivées
public class User : DirectoryObject
{
...
}
public class Group : DirectoryObject
{
...
}
J'avais initialement utilisé deux méthodes séparées pour obtenir les objets User et Group ...
public User GetUser(string objectId)
{
return _graphConnection.Get<User>(objectId);
}
public Group GetGroup(string objectId)
{
return _graphConnection.Get<Group>(objectId);
}
Après avoir écrit beaucoup d'utilisateurs répétitifs et des combinaisons de groupe, je réalisais que je pouvais combiner avec un générique comme si ...
public T Get<T>(string objectId) where T : DirectoryObject
{
return _graphConnection.Get<T>(objectId);
}
Mais je ne parviens pas à convertir ce segment ici dans un IEnumerable générique ...
public IEnumerable<User> ListUser()
{
PagedResults pagedResults = _graphConnection.List<User>(null, null);
return pagedResults.Results.OfType<User>();
}
public IEnumerable<Group> ListGroup()
{
PagedResults pagedResults = _graphConnection.List<Group>(null, null);
return pagedResults.Results.OfType<Group>();
}
Je pensais le long des lignes de ...
public IEnumerable<T> List() where T : DirectoryObject
{
PagedResults pagedResults = _graphConnection.List<T>(null, null);
return pagedResults.Results.OfType<T>();
}
Mais je ne peux pas le compiler, j'ai l'impression qu'il me manque quelque chose d'évident, mais je dessine des blancs pour le moment. L'erreur se produit ici:
public IEnumerable<T> List() where T : DirectoryObject
+1 Eh bien, pas "aussi bien", car c'est après le nom de la méthode qu'il est spécifié. Dans d'autres endroits, il est juste utilisé (au moins du point de vue de la méthode, du point de vue du type de retour, il est naturellement spécifié dans le type de retour). – Guffa
@ Selman22 - Merci. Cela a fait disparaître mon erreur de compilation! – Svek
@Guffa - Je viens de remarquer ce que vous disiez à propos de l'utilisation de "GetUsers()" comme nom de la méthode. J'essayais juste d'obtenir l'erreur du compilateur d'abord, je ne savais même pas que le nom n'était pas précis. Merci pour ça aussi! – Svek