Al leer esto , aprendí que era posible permitir que un método aceptara parámetros de múltiples tipos al convertirlo en un método genérico. En el ejemplo, el siguiente código se usa con una restricción de tipo para garantizar que "U" sea un IEnumerable<T>
.
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
Encontré más código que permitía agregar restricciones de tipo múltiple, como:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Sin embargo, este código parece imponer que arg
debe ser un tipo de ParentClass
y ChildClass
. Lo que quiero hacer es decir que arg podría ser un tipo de ParentClass
o ChildClass
de la siguiente manera:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Su ayuda es apreciada como siempre!
where T : string
, ya que string
es una clase sellada . Lo único que podría hacer es definir las sobrecargas string
y T : Exception
, como explica @ Botz3000 en su respuesta a continuación.
arg
son los definidos por object
, entonces, ¿por qué no simplemente eliminar los genéricos de la imagen y hacer el tipo de arg
object
? Que estas ganando