Leyendo this, me enteré de que era posible permitir que un método aceptara parámetros de varios tipos haciéndolo un método genérico. En el ejemplo, el siguiente código se usa con una restricción de tipo para asegurar que "U" sea IEnumerable<T>
.Método genérico múltiple (OR) tipo restricción
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
he encontrado algunas más código que permitió la adición de múltiples restricciones de tipo, tales como:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
Sin embargo, este código aparece para hacer cumplir esa arg
debe ser a la vez un tipo de ParentClass
yChildClass
. Lo que quiero hacer es decir que arg podría ser un tipo de ParentClass
oChildClass
de la siguiente manera:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
Su ayuda se agradece como siempre!
¿Qué podría hacer, * de forma genérica * en el cuerpo de dicho método (a menos que los múltiples tipos procedan de una clase base específica, en cuyo caso, ¿por qué no declararlo como la restricción de tipo)? –
@Damien_The_Unbeliever ¿No estás seguro de a qué te refieres en el cuerpo? A menos que me refiera a permitir cualquier tipo y verificar manualmente el cuerpo ... y en el código real que quiero escribir (el último fragmento de código), me gustaría poder pasar una cadena O excepción, por lo que no hay clase relación allí (excepto el sistema.objeto que imagino). – Mansfield
También tenga en cuenta que no sirve de nada escribir 'where T: string', como 'string' es una clase ** sealed **. Lo único útil que puedes hacer es definir sobrecargas para 'string' y' T: Exception', como explica @ Botz3000 en su respuesta a continuación. –