2009-07-08 14 views

Respuesta

19

Puede si hay algún tipo de limitar T a:

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

public interface ISomeInterface 
{ 
    int Age { get; } 
} 

El tipo podría ser una clase base en vez - pero tiene que ser algo a deje que el compilador sepa que definitivamente habrá una propiedad Age.

(En C# 4 se podría utilizar tipado dinámico, pero yo no lo haría a menos que se tratara de una situación particular "especial" que en realidad lo justificaba.)

+0

me adelantó ... suprime mi puesto en la vergüenza una vez más. –

+0

gracias, ahora sé lo que significa "donde T: IBlah". – Blankman

9

Ampliando la respuesta de Jon.

Otra forma es tomar un enfoque funcional al problema

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

Las mentes de Grrrreatt piensan igual :) – leppie

+0

Ow. Me duele la cabeza. :) –

+0

entonces Func toma T como parámetro y devuelve int? Pensé que Func se refiere a ambas entradas a la función getAge. – Blankman

3

¿Qué tal:

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

esto está usando un delegado? – Blankman

+0

Sí, solo un simple delegado. – leppie

Cuestiones relacionadas