2010-10-21 23 views
3

J'ai quelques lignes de codeLambdaExpression CompileToMethod

public void CreateMethod<TContract>(Expression<Action<TContract>> method) 
{ 
    var innerMethod = Builder.DefineMethod("SomeName",MethodAttributes.Private); 
    method.CompileToMethod(innerMethod); 
    //more code 
} 

Cependant, la deuxième ligne échoue. J'ai essayé avec différentes versions de DefineMethod avec peu de chance. Des suggestions?

Répondre

9

Malheureusement, CompileToMethod requiert une méthode statique comme argument (voir here). Par conséquent, vous devez ajouter MethodAttributes.Static à la définition de innerMethod.

+0

Merci qui a fixé ce –

+1

Comme d'autres commentaires, il convient de noter que vous ne pouvez pas passer un argument du type du procédé est compilé dans –

+0

Voici un travail autour basé sur les interfaces: http://justinmchase.com/ 2009/01/08/lambdaexpressioncompileromethod-e280a6-pas-presque-comme-cool-comme-je-avais espéré / – N8allan