private static Func <TComponent, TBuilder> GetCreator() { var builderType = typeof(TBuilder); var componentType = typeof(TComponent); var htmlStringType = typeof(HttpContext).Assembly.GetType("System.Web.IHtmlString"); var targetType = typeof(TBuilder); if (htmlStringType != null) { // For .NET 4 define a dynamic type which implements IHtmlString in order to support <%: %> targetType = DynamicTypeBuilder.GenerateType(builderType, new[] { htmlStringType }); } var argumentExpression = Expression.Parameter(componentType, "component"); var constructor = targetType.GetConstructor(new Type[] { componentType }); var newExpression = Expression.New(constructor, argumentExpression); return(Expression.Lambda <Func <TComponent, TBuilder> >(newExpression, argumentExpression).Compile()); }