2012-04-13 13 views

Respuesta

41

Si toda la interfaz debe ser genérica:

public interface IExample<T> 
{ 
    int GetInteger(); 
    T GetAnything(); 
} 

Si sólo el método tiene que ser genérica:

public interface IExample 
{ 
    int GetInteger(); 
    T GetAnything<T>(); 
} 
+2

+1. Me olvidé por completo de que el método puede tener su propio parámetro de tipo :) – flai

+2

Si usa .NET 4.0 es mejor usar la covarianza si es posible: interfaz pública Ejemplo I , T GetAnything (); – dvvrd

+1

¿cómo implemento la función de interfaz? – River

5
public interface IExample<T> 
{ 
    int GetInteger() 
    T GetAnything(); 
} 

Tadaa :)!

O, como alternativa, puede simplemente devolver System.Object y convertirlo en lo que desee.

+2

esto es bastante feo - 'volver System.Object y echarlo a lo que want.' – sll

+0

No creas que esto es lo que está pidiendo – NominSim

3

Si no quieres toda la interfaz (IExample) para ser genérica, a continuación, usted puede hacer esto también

public interface IExample 
{ 
    int GetInteger(); 
    T GetAnything<T>();  
} 
+1

solo para aclarar, si declara el método de esta manera en una interfaz, cuando lo implemente en la clase que implementa la interfaz, deberá mantenerlo como un método genérico y solo podrá especificar su tipo cuando llamar al método en el objeto instanciado de la clase que implementa la interfaz, no en la clase misma – daleotar

Cuestiones relacionadas