En lisant ceci , j'ai appris qu'il était possible d'autoriser une méthode à accepter des paramètres de plusieurs types en en faisant une méthode générique. Dans l'exemple, le code suivant est utilisé avec une contrainte de type pour s'assurer que "U" est un IEnumerable<T>
.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
J'ai trouvé un peu plus de code qui permettait d'ajouter plusieurs contraintes de type, telles que:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Cependant, ce code semble appliquer qui arg
doit être à la fois un type de ParentClass
et ChildClass
. Ce que je veux faire, c'est dire que arg pourrait être un type de ParentClass
ou ChildClass
de la manière suivante:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Votre aide est appréciée comme toujours!
where T : string
, tout comme string
une classe scellée . La seule chose utile que vous puissiez faire est de définir des surcharges pour string
et T : Exception
, comme expliqué par @ Botz3000 dans sa réponse ci-dessous.
arg
sont celles définies par object
- alors pourquoi ne pas simplement supprimer les génériques de l'image et en faire le type arg
object
? Que gagnez-vous?