Esempio n. 1
0
        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());
        }