2009-07-08 11 views

risposta

19

È possibile se c'è un certo tipo di vincolare T a:

public int SomeMethod(T t) where T : ISomeInterface 
{ 
    // ... 
} 

public interface ISomeInterface 
{ 
    int Age { get; } 
} 

Il tipo potrebbe essere una classe base, invece - ma ci deve essere qualcosa a lascia che il compilatore sappia che ci sarà sicuramente una proprietà Age.

(In C# 4 è possibile utilizzare la tipizzazione dinamica, ma io non lo farei a meno che non si trattasse di una situazione particolarmente "speciale" che in realtà è giustificato.)

+0

mi ha battuto ad esso ... cancellato il mio post per la vergogna ancora una volta. –

+0

grazie, ora so cosa significa "dove T: IBlah". – Blankman

9

Ampliando la risposta di Jon.

Un altro modo è quello di prendere un approccio funzionale al problema

public int SomeMethod(T t, Func<T,int> getAge) { 
    int blah = getAge(t); 
    ... 
} 
+0

Le menti di Grrrreatt pensano allo stesso modo :) – leppie

+0

Ow. Mi fa male la testa. :) –

+0

quindi Func accetta T come parametro e restituisce int? Ho pensato che Func si riferisca ad entrambi gli input alla funzione getAge. – Blankman

3

ne dite:

public class Blah 
{ 
    public int SomeMethod(Func<int> get_age) 
    { 
    int blah = get_age(); 
    return blah; 
    } 
} 
+0

sta usando un delegato? – Blankman

+0

Sì, solo un semplice delegato. – leppie

Problemi correlati