2010-11-22 11 views
1

J'ai une question. Comment puis-je créer un paramètre de type générique? Je suis en train de construire un arbre d'expression et moi avons la ligne suivante pour construire:Comment créer un paramètre de type générique

var expression = Expression 
       .Lambda<Func<T, bool>>(
        operation, 
        new ParameterExpression[] {parameter}); 

Il est donc prévu que je spécifie le paramètre de type T dans lambda> mais le paramètre type T de ne pas connu avant l'exécution .

Aidez-nous s'il vous plaît. Merci

Répondre

3

Eh bien, vous pouvez l'écrire dans une méthode générique:

public Expression<Func<T,bool>> BuildExpression<T>(...) 
{ 
    // Whatever you need to do 
    var expression = Expression 
      .Lambda<Func<T, bool>>(
       operation, 
       new ParameterExpression[] {parameter}); 
} 

... puis appeler cette méthode par réflexion. Autre possibilité:

Sans rien savoir plus sur vos besoins, il est très difficile de donner des conseils sur lequel d'entre eux seraient être l'approche la plus appropriée. S'il vous plaît modifier votre question pour donner plus de détails.

+0

Merci pour la réponse. – Luka

+0

Merci pour la réponse. Ce que j'essaye de construire est un utilitaire qui convertira une requête faite dans l'interface utilisateur, pour interroger dans le domaine. Le problème est que l'interface utilisateur ne voit que les classes DTO et non le domaine, donc je dois convertir l'expression linq (personDTO x) => x.Name en (Person x) => x.Name. D'une manière ou d'une autre, j'ai réussi à analyser et à construire l'expression. maintenant ce qui reste est la dernière étape. Expression.Lambda >. Le problème est que je ne connais pas le paramètre T - (c'est le paramètre de type de l'objet de domaine réel à savoir. (Personne)) parce que ce paramètre de type est construit à l'exécution. – Luka

+0

@Luka: Eh bien, cela a donné * quelques * informations supplémentaires - et je pense que l'option finale est celle qui convient le mieux ici. –

Questions connexes