我设法使用CodeDom创建一个类,并向该类添加一个方法.现在,有没有办法构建CodeCompileUnit实例,编译代码并调用生成的方法?方法调用必须在与代码生成相同的上下文中完成.
我在PHP中创建一个CSS生成器,它使用CSSX(是的,他们是我的想法)文件(使用特殊语法).一个特点是"简短评论":
body
{
font-family: Georgia; //I really like this font!
}
Run Code Online (Sandbox Code Playgroud)
现在我想用/*...*/comment替换这个注释,所以输出是这样的:
body
{
font-family: Georgia; /*I really like this font!*/
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?谢谢,
PS完整的CSSX文件被读入一个字符串变量.
PPS这个问题得到解答.要修复url('// server/etc.cssx')问题,请使用以下命令:
$file = preg_replace('~[^"\'\(]//([^\r\n]*)[^"\'\)]~', '/*$1*/', $file);
Run Code Online (Sandbox Code Playgroud) 问题是我需要在运行时创建一个这样的类:
public class Foo {
@Bar int value0;
@Bar int value1;
@Bar int value2;
....
}
Run Code Online (Sandbox Code Playgroud)
在运行时决定字段数.
我在看Javassist,在那里你可以创建一个新类,并为其添加字段,但我还没有找到一种方法来注释这些字段.
我正在将我们的web服务更改为异步模型.为此,我必须改变一百多种方法.
手动执行是一个(没有吸引力的)选项.有没有办法以编程方式解析和更改多个函数/代码文件?
例:
[Webmethod]
public void MyWebservice (string parameter1, string parameter2, string parameter3)
{
//Logic here
}
Run Code Online (Sandbox Code Playgroud)
并将其更改为:
public void InternalMyWebservice (string parameter1, string parameter2, string parameter3, AsyncCallback callback)
{
//Logic here
}
[Webmethod]
public void BeginMyWebservice (string parameter1, string parameter2, string parameter3, AsyncCallback callback, object asyncState)
{
//Queue InternalMyWebservice in a threadpool
}
public void EndMyWebservice(IAsyncResult asyncResult)
{
//Set return values
}
Run Code Online (Sandbox Code Playgroud)
对于每个Web服务,我必须做的事情基本相同.将名称更改为"InternalX",添加参数并创建开始和结束方法.
我想创建一个WPF应用程序,该应用程序从数据库检索XAML代码并显示检索到的代码。
可以说数据库返回以下代码:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid x:Name="mainGrid">
<Button Content="test case 1"
HorizontalAlignment="Left"
Margin="10,10,0,0"
VerticalAlignment="Top"
Width="100"
Click="TestCase1_OnClick"
Height="29"/>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
我如何在运行时执行此代码(或者可能只是mainGrid的内容)?
有哪些必需和推荐的工具(例如使用java)来创建一个"解释器",它从文本文件(具有自己的语法)生成乳胶源文件?
例:
This is a list of items:
* first
* second
* third
Run Code Online (Sandbox Code Playgroud)
应该生成一个包含的可编译*.tex文件
This is a list of items:
\begin{itemize}
\item first
\item second
\item third
\end{itemize}
Run Code Online (Sandbox Code Playgroud) 我有一个现有的Java应用程序,其中包含我想以编程方式修改的源文件.我需要能够对源文件进行分析,并根据该分析执行源转换.我还需要能够理解不同源文件之间的关系.我还想将此过程创建为独立的Java应用程序.
做了一点研究我发现了以下工具:代码模型和Eclipse JDT.我确定还有其他人.我已经排除了代码模型,因为它(据我所知)只允许生成新代码,不能使用现有代码.
Eclipse JDT库似乎符合我的所有需求.我能够轻松地解析源文件.我可以配置绑定,以便保留跨类型的信息.我现在遇到的问题是让ASTRewrite功能正常工作.看来(从我读过的例子和文档中)它只能在eclipse插件中运行.当我尝试使用重写器时,我收到以下错误:
java.lang.IllegalArgumentException: This API can only be used if the AST is created from a compilation unit or class file
那么我可以在独立应用程序中使用ASTRewrite功能,还是需要开始查看其他工具?
我正在使用新的AutoPlugin机制为sbt编写代码生成插件.我需要修改sourceGenerators in Compile设置但不知何故,当我从插件中执行此操作时它不起作用.调用编译后,屏幕上不会打印任何内容.
但是,如果我采取该行sourceGenerators in Compile <+= (mySourceGenerator in Compile)并将其移动到build.sbt项目的突然sourceGenerators in Compile设置被修改,当我运行编译任务时,消息将被写入屏幕.
那里有什么我想念的吗?插件的代码在这里:
package net.lopezbobeda.plugin
import sbt._
import Keys._
import java.io.{ File, Writer }
object MyPlugin extends AutoPlugin {
// by defining autoImport, the settings are automatically imported into user's `*.sbt`
object autoImport {
// configuration points, like the built-in `version`, `libraryDependencies`, or `compile`
lazy val mySourceGenerator = taskKey[Seq[File]]("Generate")
// default values for the tasks and settings
lazy val baseXtendPluginSettings: Seq[Def.Setting[_]] = …Run Code Online (Sandbox Code Playgroud) 我已经从TypeSafe Activator创建了HelloSlick 2.1项目,现在我正在调整它以使用我的数据库......有很多表,手动定义Table类会很痛苦,所以我想使用代码生成器.
我在Scala-Eclipse中打开了项目并创建了一个新的工作表来进行实验,但它在import语句中给出了一个错误:
import scala.slick.model.codegen.SourceCodeGenerator`
Run Code Online (Sandbox Code Playgroud)
错误如下:
object codegen is not a member of package scala.slick.model
Generate.scala /hello-slick-2.1/src/main/scala line 1 Scala Problem
Run Code Online (Sandbox Code Playgroud)
是否有任何特殊包要包含在示例中缺少的类路径中?我使用的是错误的光滑版本吗?