2010-07-07 10 views
33

puedo restringir los genéricos a un tipo especificar utilizando la cláusula "Dónde", tales como:¿Cómo especifico múltiples restricciones de tipo genérico en un único método?

public void foo<TTypeA>() where TTypeA : class, A 

¿Cómo puedo hacer esto si mi función tiene dos tipos genéricos?

public void foo<TTypeA, TTypeB>() where TTypeA : class, A && TTypeB : class, B 

Lo anterior no funciona. ¿Cuál es la sintaxis correcta para añadir la regla "TTypeB: clase, B"

Respuesta

53
public void foo<TTypeA, TTypeB>() where TTypeA : class, A 
            where TTypeB : class, B 
+1

Más información acerca de las restricciones sobre los parámetros de tipo genérico está disponible en MSDN, donde se describen algunos de los otros tipos de restricciones posible (como restricciones desnudos: 'donde TTypeB: TTypeA '). http://msdn.microsoft.com/en-us/library/d5x73970.aspx – LBushkin

+0

¡Gracias a todos! Funciona. Voy a marcar esto como la respuesta una vez SO me deja (al parecer tengo que esperar 9 minutos) – Justin

8
public void foo<TTypeA, TTypeB>() where TTypeA : class, A where TTypeB : class, B 

Dang, de 20 años de retraso. Vota por James Curran, fue el primero.

+2

Pero tiene un one-liner 8-) – Dani

6

¿Algo como esto?

public void foo<TTypeA, TTypeB>() where TTypeA : class where TTypeB : class 
0

basta con sustituir && con otro where

+0

No es correcto, solo se puede colocar una restricción sin tipos adicionales –

Cuestiones relacionadas