Leggendo questo , ho imparato che era possibile consentire a un metodo di accettare parametri di più tipi rendendolo un metodo generico. Nell'esempio, il seguente codice viene utilizzato con un vincolo di tipo per garantire che "U" sia un IEnumerable<T>.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
Ho trovato un po 'di codice in più che ha permesso di aggiungere più vincoli di tipo, come ad esempio:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Tuttavia, questo codice sembra imporre che argdeve essere sia un tipo di ParentClass e ChildClass . Quello che voglio fare è dire che arg potrebbe essere un tipo di ParentClass o ChildClass nel modo seguente:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Il tuo aiuto è apprezzato come sempre!
where T : string, come stringè una classe sigillata . L'unica cosa utile che potresti fare è definire i sovraccarichi per stringe T : Exception, come spiegato da @ Botz3000 nella sua risposta di seguito.
argsono quelli definiti da object- quindi perché non rimuovere semplicemente i generici dall'immagine e creare il tipo di arg object? Cosa stai guadagnando?