我有一组XSD,我可以从中生成数据访问类,存储过程等等.
我没有的是从这些生成数据库表的方法 - 是否有一个工具可以为我生成DDL语句?
这与数据集表中的创建数据库表不同,因为我没有数据集表,而是XSD.
在Visual Studio中,如果我定义一个类来实现一个接口,例如
class MyObject : ISerializable {}
Run Code Online (Sandbox Code Playgroud)
我可以右键单击ISerializable,从上下文菜单中选择" 实现接口 ",并查看我的类定义中出现的相应方法.
class MyObject : ISerializable {
#region ISerializable Members
public void GetObjectData(SerializationInfo info,
StreamingContext context)
{
throw new NotImplementedException();
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
在Mac上的Xcode中有什么类似的功能吗?我希望能够以这种方式自动实现协议.也许使用生成的可选方法但注释掉了.
是的,可以为"Sum"或"Divide"等函数生成边界值测试.Pex是一个很好的工具.
但更多时候我们会对商业行为进行测试.让我们考虑经典Beck的tdd书中的例子:
[Test]
public void ShouldRoundOnCreation()
{
Money money = new Money(20.678);
Assert.AreEqual(20.68,money.Amount);
Assert.AreEqual(2068,money.Cents);
}
Run Code Online (Sandbox Code Playgroud)
可以生成此测试吗?没有:)我项目中95%的测试检查业务逻辑,无法生成.
Pex(特别是与Moles配对)可以提供100%的代码覆盖率,但是测试套件的高代码覆盖率从未表明,代码经过了充分测试 - 它只能让所有内容都经过测试.这非常危险.
所以,问题是 - Pex真的是有用的工具吗?
我想隐藏我的自定义工具生成的文件,但我找不到任何关于如何完成此操作的文档.
我正在寻找的一个例子是文件背后的WPF代码.这些文件不会显示在Visual Studio项目视图中,而是使用项目进行编译,并在IntelliSense中可用.文件后面的WPF代码(例如,Window1.gics)由自定义工具生成.
我有一堆带有各种类和函数声明的C++头文件.到目前为止,当我编写声明的类和函数的C++源文件实现时,我已经手动:
只有在完成所有工作之后,我才真正开始实现这些功能.我想知道是否有某个工具可以从".h"文件自动生成".cpp"文件,其中生成的".cpp"包含".h"文件中声明的函数的空存根(并没有给出内联定义).一个UNIX友好的命令行工具将是首选.谢谢.
更新:跨平台工具将是理想的.如果没有,我正在使用Mac OS X 10.6.
T4已经在Visual Studio中存在了好几年,但没有得到很多关注.但是,对于那些了解它的人来说,似乎有一些非常有创意和有用的目的.
我正在研究使用T4的一些不同方式,我很高兴听到您如何将它用于现实生活场景.我主要对非标准和创造性用途感兴趣.
一些有趣的例子:
注意:我意识到这是一个面向讨论的问题,但答案可能对其他人有所帮助.我已将其标记为主观且也标记为"社区维基",因此请允许该问题保持开放.谢谢!
基于可用的sbt 0.11.0文档("常见任务"维基页面和其他),在看到如何在Scalaz SBT构建和Scalate SBT构建中完成后,我无法弄清楚为什么我的简单示例不起作用:
import sbt._
import Keys._
object MyBuild extends Build {
lazy val project = Project(
id = "root",
base = file("."),
settings = Defaults.defaultSettings ++ Seq(
(sourceGenerators in Compile) <+= (sourceManaged in Compile) map { dir =>
val file = dir / "bla.scala"
IO.write(file, """object Bla extends App { println("bla!") }""")
Seq(file)
}
)
)
}
Run Code Online (Sandbox Code Playgroud)
把它放在一个空项目的project/build.scala上并运行"sbt compile"生成/编译什么都没有,"sbt run"抱怨它找不到任何主类.
现在,如果我将设置放在"快速配置"build.sbt中,而不是如上所述的完整配置,它就可以正常工作.
(sourceGenerators in Compile) <+= (sourceManaged in Compile) map { dir => …Run Code Online (Sandbox Code Playgroud) 在普通Java中,可以在运行时以编程方式覆盖类的方法(甚至创建新方法)?
即使我在编译时不知道类,我也希望能够这样做.
我在运行时重写的意思是:
abstract class MyClass{
public void myMethod();
}
class Overrider extends MyClass{
@Override
public void myMethod(){}
}
class Injector{
public static void myMethod(){ // STATIC !!!
// do actual stuff
}
}
// some magic code goes here
Overrider altered = doMagic(
MyClass.class, Overrider.class, Injector.class);
Run Code Online (Sandbox Code Playgroud)
现在,这个调用......
altered.myMethod();
Run Code Online (Sandbox Code Playgroud)
...将调用Injector.myMethod()而不是Overrider.myMethod().
Injector.myMethod()是静态的,因为在执行"magic"之后,它会从不同的类实例(它是Overrider)调用,(因此我们阻止它访问本地字段).
code-generation ×10
.net ×2
java ×2
c# ×1
c++ ×1
customtool ×1
database ×1
hibernate ×1
lombok ×1
objective-c ×1
pex ×1
refactoring ×1
reflection ×1
runtime ×1
sbt ×1
scala ×1
sql ×1
t4 ×1
unit-testing ×1
wpf ×1
xcode ×1
xsd ×1