Beispiel #1
0
        internal LambdaExpression LambdaExpression(Type delegateType)
        {
            var types = delegateType.GetGenericArguments();

            // return type
            types[types.Length - 1] = _expression.Type;

            var genericType          = delegateType.GetGenericTypeDefinition();
            var inferredDelegateType = genericType.MakeGenericType(types);

            return(Expression.Lambda(inferredDelegateType, _expression, DeclaredParameters.Select(p => p.Expression).ToArray()));
        }
Beispiel #2
0
 /// <summary>
 /// Generate a lambda expression.
 /// </summary>
 /// <returns>The lambda expression.</returns>
 /// <typeparam name="TDelegate">The delegate to generate. Delegate parameters must match the one defined when creating the expression, see UsedParameters.</typeparam>
 public Expression <TDelegate> LambdaExpression <TDelegate>()
 {
     return(Expression.Lambda <TDelegate>(_expression, DeclaredParameters.Select(p => p.Expression).ToArray()));
 }
Beispiel #3
0
 public override string GetSignatureString() => ReturnParameter.GetSignatureString() + " " + Name + GetFullTypeParametersString()
 + "(" + string.Join(",", DeclaredParameters.Select(x => x.GetSignatureString())) + ")";
Beispiel #4
0
 // TODO: Generic arguments (and on ConstructorInfo)
 public override string ToString() => ReturnType.Name + " " + Name + "(" + string.Join(", ",
                                                                                       DeclaredParameters.Select(x => x.ParameterType.IsByRef? x.ParameterType.Name.TrimEnd('&') + " ByRef" : x.ParameterType.Name)) + ")";
Beispiel #5
0
 public override string ToString() => DeclaringType.Name + "(" + string.Join(", ", DeclaredParameters.Select(x => x.ParameterType.Name)) + ")";