2012-04-13 15 views

risposta

41

Se l'intera interfaccia dovrebbe essere generico:

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

Se solo il metodo deve essere generico:

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

+1. Ho completamente dimenticato che il metodo può avere il proprio parametro di tipo :) – flai

+2

Se si utilizza .NET 4.0, meglio usare la covarianza se possibile: interfaccia pubblica I Esempio , T GetAnthing (); – dvvrd

+1

come si implementa la funzione di interfaccia, quindi? – River

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

Tadaa :)!

Oppure, in alternativa, è sufficiente restituire System.Object e trasmetterlo a quello desiderato.

+2

Questo è piuttosto brutto - 'Restituisci System.Object e lanciatelo in qualunque cosa desideri. – sll

+0

Non pensare che questo sia quello che sta chiedendo – NominSim

3

Se non volete l'intera interfaccia (IExample) per essere generico, poi puoi farlo anche

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

solo per chiarire, se dichiari il metodo in questo modo in un'interfaccia, quando la implementi nella classe che implementa l'interfaccia, dovrai mantenerla come metodo generico e sarai solo in grado di specificarne il tipo quando chiama il metodo sull'oggetto istanziato dalla classe che implementa l'interfaccia, non nella classe stessa – daleotar

Problemi correlati