2010-07-22 7 views
0
public void aMethod<T>(Expression<Func<T, object>> lambda) 
{ 
    ...... 
} 

aMethod<User>(x=> x.UserId) 

L'utilisateur est ma classe personnalisée, les membres de son UserId type int ...expressions Lambda automatique d'emballage

Je veux l'expression lambda x => x.UserId

Mais la manière, je obtenir est x => Convert (x.UserId) Par conséquent, les opérations suivantes ne peuvent pas, je dois veiller à ce que mon type d'expression Expression <Func <T, object>> il n'est pas définie comme Expression <Func <T, int>>

est-il possible i t?

Répondre

0
public void aMethod<T,TMember>(Expression<Func<T, TMember>> lambda) 
{ 
    ...... 
} 

aMethod<User>(x=> x.UserId) 

objet est un type de référence. int un type de valeur. si vous obtenez un int comme un objet, il doit être emballé :-)

+0

Comment écrire? Dans le corps de la méthode dans – Dreampuf

+0

c'est dur, si vous écrivez seulement partiellement phrases anglaises .... alors, voulez-vous savoir ce qui devrait être dans le corps de la méthode? alors s'il vous plaît expliquer ce qu'il devrait faire ... – cRichter

+0

= =! ... Parce que j'ai beaucoup de code est basé sur aMethod (xxxx) pour écrire, si nous voulons changer la technologie va coûter beaucoup de temps. Donc, il n'y a pas d'autre moyen? – Dreampuf