2010-12-10 19 views
5

Digamos que tengo un poco de interfaz básica que es genéricos impulsada por:C# genéricos pregunta - limitación interfaz genérica

public interface Inteface<T> { 
    void Foo(T t); 
} 

Ahora tengo algo de aplicación concreta de esta interfaz, que también es genérico:

public class InterfaceImpl<T> { 
    public void Foo(T t) { 
     // Whatever 
    } 
} 

Esto se ve bien, pero ahora vamos a decir que tengo otra clase:

public class Ololo { 
    public void BadFunction<TShouldModelInterface>(TShouldModelInterface shouldModelInterface) { 
     // Whatever 
    } 
} 

Y digamos Quiero realizar una comprobación si TShouldModelInterface realmente implementa alguno de los posibles Interface<T>.

Si la interfaz no era genérica, simplemente escribiría algo como where TShouldModelInterface : Interface.

Pero ¿hay alguna manera de resolver este problema si la interfaz es un ?

+1

he modificado el título un poco por lo que es menos genérico –

+0

@ Daniel Ahahah .. de hecho menos "genérico" –

+0

En su ejemplo, '' InterfaceImpl '' no implementa '' Inteface '' (falta "r", por cierto). Debería declararlo como '' clase pública InterfaceImpl : Inteface '' –

Respuesta

8
public class Ololo { 
    public void BadFunction<TShouldModelInterface, T>(TShouldModelInterface shouldModelInterface) 
     where TShouldModelInterface : Interface<T> 
    { 
     // Whatever 
    } 
} 
Cuestiones relacionadas