static Action <TObject, IEnumerable <object>, ILogger> BuildPropertySetter <TObject, TProperty>(string propertyName, Func <IEnumerable <object>, ILogger, TProperty> getter) { var obj = Ex.Parameter(typeof(TObject)); var values = Ex.Parameter(typeof(IEnumerable <object>)); var logger = Ex.Parameter(typeof(ILogger)); return(Ex .Lambda <Action <TObject, IEnumerable <object>, ILogger> >( Ex.Assign( Ex.PropertyOrField( obj, propertyName), Ex.Invoke( Ex.Constant(getter), values, logger)), obj, values, logger) .Compile()); }