Ao ler isso , aprendi que era possível permitir que um método aceitasse parâmetros de vários tipos, tornando-o um método genérico. No exemplo, o código a seguir é usado com uma restrição de tipo para garantir que "U" seja um IEnumerable<T>
.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
Encontrei um pouco mais de código que permitia adicionar várias restrições de tipo, como:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
No entanto, esse código parece impor que arg
deve ser um tipo de ParentClass
e ChildClass
. O que eu quero fazer é dizer que arg pode ser um tipo de ParentClass
ou ChildClass
da seguinte maneira:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Sua ajuda é apreciada como sempre!
where T : string
, como string
é uma classe selada . A única coisa útil que você pode fazer é definir sobrecargas string
e T : Exception
, como explicado por @ Botz3000 em sua resposta abaixo.
arg
são os definidos por object
- então, por que não remover os genéricos da imagem e fazer o tipo arg
object
? O que você está ganhando?