public Discoverer(ITypeContainer typeContainer, Logger logger) { ArgumentChecker.NotNull(typeContainer, () => typeContainer); _typeContainer = typeContainer; _logger = logger; }
/// <summary> /// Compiles an <see cref="LambdaExpression"/> to a <see cref="Delegate"/>. /// </summary> /// <param name="expression">The expression.</param> /// <returns>The compiled expression as a <see cref="Delegate"/>.</returns> public Delegate CompileExpression(LambdaExpression expression) { ArgumentChecker.NotNull(expression, () => expression); var type = expression.GetType(); bool isCompilableExpression = type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Expression <>); ArgumentChecker.Assert <ArgumentException>(isCompilableExpression, "Unexpected expression type, cannot compile", "expression"); Delegate compiledDelegate = (Delegate)type.GetMethod("Compile", new Type[0]).Invoke(expression, new object[0]); return(compiledDelegate); }