Veuillez regarder mon code: j’essaie de créer myCar
avec un arbre d’expression.
J’ai une ArgumentException
sur cette ligne. var m = Expression.Lambda<Func<Engine,...
Le message indique un nombre incorrect de parameters fournis pour la déclaration lambda .
public class Engine { public ssortingng Name { get; private set; } public Engine(ssortingng name) { Name = name; } } public class Car { private readonly Engine engine; public Car(Engine engine) { this.engine = engine; } public ssortingng GetEngineName(){return engine.Name;} } class Program { static void Main(ssortingng[] args) { var ci = typeof (Car).GetConstructor(new[] {typeof (Engine)}); var engine = Expression.Parameter(typeof (Engine)); var m = Expression.Lambda<Func>(Expression.New(ci, engine)) .Comstack(); var myCar = m(new Engine("TDI 2.0")); var s = myCar.GetEngineName(); } }
Je ne peux pas comprendre ce qui ne va pas et où j’ai commis l’erreur. Merci d’avance.
Vous devez spécifier le moteur dans la partie ‘params ParameterExpression [] parameters’ de Expression.Lambda.
var m = Expression.Lambda>(Expression.New(ci, engine), engine)