标签: code-generation

如何在Visual Studio中自动生成多个getter/setter或访问器

在开始之前,我知道有这篇文章并且它没有回答我的问题:如何在Visual Studio中生成getter和setter?

在Visual Studio 2008中,可以通过右键单击私有变量 - > Refactor - > Encapsulate Field来自动生成getter和setter(访问器)...

这对于有2种或3种方法的课程来说非常棒,但是来自MS!你曾经和一个有几个访问者的班级一起工作过吗?

我正在寻找一种方法来通过几次点击生成ALL(Eclipse那里的人会知道我在说什么 - 你可以右键单击一个类并选择'生成访问者'.完成.).我真的不喜欢花20分钟的时间点击向导.我曾经有一些.NET 1.0代码可以生成类,但它早已不复存在,这个功能应该是IDE的标准.

更新:我可能会提到我已经发现Linq to Entities和SQLMetal是非常酷的想法,而且超出了我在上面段落中的简单请求.

ide code-generation visual-studio-2008 visual-studio

5
推荐指数
1
解决办法
3万
查看次数

缩进代码生成

通常,程序员编写生成其他代码的代码.

(技术术语是元编程,但它比仅仅交叉编译器更常见;考虑生成HTML或每个XSLT文件的每个PHP网页.)

一个领域,我觉得挑战性的未来与技术,以确保这两个手写的源文件,以及计算机生成的对象文件明确缩进来帮助调试.这两个目标似乎经常相互竞争.

我发现这在PHP/HTML组合中特别具有挑战性.我认为这是因为:

  • 源文件中有时会生成比生成PHP更多的HTML代码
  • HTML文件往往比SQL语句更长,需要更好的缩进
  • HTML具有空间敏感功能(例如标签之间)
  • 结果是比SQL语句更公开可见的HTML,因此要做更合理的工作会有更大的压力.

你用什么技术来解决这个问题?


编辑:我接受至少有三个参数不打扰生成漂亮的HTML代码:

  • 生成代码的复杂性增加了.
  • 浏览器渲染没有区别; 开发人员可以使用Firebug或类似功能来很好地查看它.
  • 轻微的性能损失 - 增加了空白字符的下载时间.

我当然有时会生成代码而不考虑缩进(尤其是SQL).

但是,有一些论点推动了另一种方式:

  • 我发现,在实践中,我就频繁读取生成的代码-有额外的步骤来访问它是不方便的.
  • HTML有一些空间敏感问题,偶尔会有一些问题.

例如,考虑代码:

<div class="foo">
    <?php
        $fooHeader();
        $fooBody();
        $fooFooter();
    ?>
</div>
Run Code Online (Sandbox Code Playgroud)

它比以下代码更清晰:

<div class="foo"><?php
        $fooHeader();
        $fooBody();
        $fooFooter();
?></div>
Run Code Online (Sandbox Code Playgroud)

但是,由于HTML中包含的空格,它也有不同的渲染.

php code-generation metaprogramming

5
推荐指数
1
解决办法
1063
查看次数

.Net SvcUtil:属性必须是可选的

我正在尝试使用SvcUtil.exe而不是Xsd.exe生成C#代码类.后者给了我一些问题.

命令行:

SvcUtil.exe myschema.xsd /dconly /ser:XmlSerializer
Run Code Online (Sandbox Code Playgroud)

这里描述并解决了几个SvcUtil问题:http://blog.shutupandcode.net/? p = 761

我无法解决的一个问题是:错误:无法导入命名空间''中的'DatafieldDescription'.属性必须是可选的,并且来自名称空间" http://schemas.microsoft.com/2003/10/Seri alization /".更改架构以便类型可以映射到数据协定类型或使用ImportXmlType或使用其他序列化程序. "

我变了

<xs:attribute name="Order" use="required">
Run Code Online (Sandbox Code Playgroud)

至

<xs:attribute name="Order" use="optional">
Run Code Online (Sandbox Code Playgroud)

和

<xs:attribute name="Order">
Run Code Online (Sandbox Code Playgroud)

但错误仍然存​​在.是否可以使用属性,或者我是否必须将它们全部删除(在这种情况下,这种表现已经结束)?

.net attributes xsd code-generation svcutil.exe

5
推荐指数
1
解决办法
3921
查看次数

从WSDL生成代码会导致异常

我正在使用Axis2 1.5.1(wsdl2java)从给定的WSDL文件生成代码(客户端存根).
Web服务由外部应用程序提供.

<?xml version="1.0" encoding="utf-8"?>  
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"  
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility- 1.0.xsd"  
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"   
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"             
xmlns:tns="http://tempuri.org/"   
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"     
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
xmlns:i0="http://schemas.microsoft.com/ws/2005/02/mex/bindings" 
xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"   
xmlns:wsa10="http://www.w3.org/2005/08/addressing"   
xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"   
name="service" targetNamespace="http://tempuri.org/"   
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">  
<wsdl:types>  
<xsd:schema targetNamespace="http://tempuri.org/Imports">  
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication0.xsd" />  
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication1.xsd" />  
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication2.xsd" />  
<xsd:include schemaLocation="SampleApp.App.ApplicationManager.RemoteApplication3.xsd" />  
</xsd:schema>  
</wsdl:types>  
...  
</wsdl:definition>  
Run Code Online (Sandbox Code Playgroud)

RemoteApplication0.xsd的内容如下:

<?xml version="1.0" encoding="utf-8"?>  
<xs:schema xmlns:tns="http://schemas.microsoft.com/Message" 
elementFormDefault="qualified"  
targetNamespace="http://schemas.microsoft.com/Message"  
xmlns:xs="http://www.w3.org/2001/XMLSchema">  
<xs:complexType name="MessageBody">  
<xs:sequence>  
<xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" />  
</xs:sequence>  
</xs:complexType>  
</xs:schema>  
Run Code Online (Sandbox Code Playgroud)

命令行:

wsdl2java -ss -g -d adb -or -p com.sampleapp.ws.generated.client -uri SampleRemoteProcess.wsdl  
Run Code Online (Sandbox Code Playgroud)

生成过程会导致异常.
堆栈跟踪:

Using AXIS2_HOME: …
Run Code Online (Sandbox Code Playgroud)

java wsdl axis2 code-generation wsdl2java

5
推荐指数
1
解决办法
1万
查看次数

来自现有bean的Spring XML - 如何?

我有java bean:

package com.denisk.beans;
...
public class SomeBean {
    private String someProperty;
    private AnotherBean anotherBean;
    ...
}

public class AnotherBean {
    private String anotherProperty;
    ....
}
Run Code Online (Sandbox Code Playgroud)

我想为这些bean 生成一个stub xml spring配置,就像这样

<beans>
    <bean id="someBean">
        <property name="someProperty" value="sldfjslkdfjas;lfj"/>
        <property name="anotherBean" ref="anotherBean"/>
    </bean>
    <bean id="anotherBean">
        <property name="anotherProperty" value="klj;df;ksdjflsjkd;lfj"/>
    </bean>
</beans>
Run Code Online (Sandbox Code Playgroud)

我想要使​​用一些工具来完成,它会接受我的bean作为输入的路径,如下所示:

denisk@denisk-work:~$ generateSpringXml -p "/home/denisk/myProject/src/main/java/com/denisk/beans" -output "/home/denisk/mySpringConfig.xml"
Run Code Online (Sandbox Code Playgroud)

不应该是一个大问题,但我不能谷歌这样的东西.

谢谢

java xml spring code-generation dependency-injection

5
推荐指数
1
解决办法
1771
查看次数

配置SCons以使用单独的工具进行代码生成和组装

我正在尝试使用SCons准备构建系统.我想clang用于代码生成阶段和其他所有的自定义编译器工具链.

默认情况下,SCons配置没有显式(.s)生成程序集文件的步骤.

为了解决这个问题,我创建了自己的Builder汇编文件.

code_generator = Builder(action = '$CC -$LOTS_OF_FLAGS -S $SOURCE -o $TARGET', suffix = '.s')
env.Append(BUILDERS = {'CodeGenerator':code_generator})
Run Code Online (Sandbox Code Playgroud)

然后Builder我在我的源文件上使用它并将结果传递NodeList给Program.

for file in Glob('*.c'):
  sources += env.CodeGenerator(file)

env.Program('say_hello', sources) 
Run Code Online (Sandbox Code Playgroud)

当我不修改任何变量时,这很有效.我用了一个可执行文件gcc.

但是,当我尝试替换适当的变量以便SCons使用自定义工具链(使用env.Replace(CC='clang')...)时,只生成一个程序集文件.我的自定义Builder不会在任何其他文件上调用,SCons尝试仅链接一个目标文件(显然会失败)

  1. 如何让SCons在所有文件上运行构建器并包含那些用于链接的目标文件?
  2. 有没有更好的方法来完成我想要做的事情?我刚刚开始使用SCons.

python code-generation build clang scons

5
推荐指数
1
解决办法
3258
查看次数

从OData $ metadata生成TypeScript接口

我正在研究OData和TypeScript,在了解OData客户端代码生成器时可以为获得OData端点的TypeScript接口做类似的事情而感到震惊。重构时真的有帮助:)

所以想知道是否有人对此事有经验。喜欢他们使用什么工具。(如果存在)他们遇到的问题。

code-generation odata typescript

5
推荐指数
1
解决办法
1715
查看次数

如何使用Scala宏创建对象?

我正在尝试创建一个将生成对象的Scala宏 - 类似于

object SomeEnum {
  sealed abstract class Enum(name: String)
  case object Option1 extends Enum("option1")
  case object Option2 extends Enum("option2")
  private val elements: Seq[Enum] = Seq(Option1, Option2)
  def apply(code: String): Enum = {
    ...
  }
} 
Run Code Online (Sandbox Code Playgroud)

我以为我可以创建一个宏createEnum,所以我可以放入 createEnum("SomeEnum", "Option1", "Option2")我的代码并让它生成.好像它正在呼唤一个宏.

但我不能理解宏.我正在使用Scala 2.11.6,只是为了尝试让某些东西工作,我创建了以下内容:

object createEnumObj {
  def createEnumImpl(c: scala.reflect.macros.whitebox.Context)(ename: c.Expr[String]): c.universe.ModuleDef = {
    import c.universe._

    val Literal(Constant(s_ename: String)) = ename.tree
    val oname = TermName(s_ename)

    val barLine = q"val bar: Int = 5"
    q"object $oname { $barLine }"
  }

  def …
Run Code Online (Sandbox Code Playgroud)

macros code-generation scala

5
推荐指数
0
解决办法
716
查看次数

角$编译为字符串以生成代码

我正在使用Angular构建通用代码生成器

我有动态数据结构和模板,旨在构建不同类型的代码。HTML,C#,SQL,Javascript,CSS,Ruby。

在此处输入图片说明

我已经获得$ compile函数作为指令的一部分工作,并且可以在Angular页面中注入元素。

我真正需要的是生成一个简单的字符串的生成。

我读过的每一篇文章都谈到获取编译后的输出并将其注入角度管道,这不是我的要求。

有谁知道我可以从已经与合并范围数据合并的已编译模板中提取一个简单的字符串吗?

angular.module('workibleServerApp')
  .directive('generateDynamicTemplate', ['$compile', function ($compile) {
      return {
          scope: true,
          data: '=',
          rawTemplate: '=',
          restrict: 'E',
          link: function (scope, element, attrs) {

              scope.$watchGroup([attrs.data, attrs.rawTemplate], function (newValues) {

                  scope.data = newValues[0];
                  var rawTemplate = newValues[1];

                  element.html('');
                  //element.html('<textarea id="outputRaw" name="outputRaw" class="form-control" rows="12">');

                  if (!_.isEmpty(scope.data) && !_.isEmpty(rawTemplate)) {
                      var tl = angular.element(rawTemplate);
                      var compiled = $compile(tl)(scope);
                      element.append(compiled);

                      scope.convertToString = compiled;
                  }
                  //element.append('</textarea>');
              });


          }
      };
  }]);
Run Code Online (Sandbox Code Playgroud)

没有填充convertToString

              <div class="col-md-6">
                    <h6><strong>Output</strong></h6>
                    <!-- This renders output from the …
Run Code Online (Sandbox Code Playgroud)

code-generation angularjs

5
推荐指数
0
解决办法
540
查看次数

在.NET Core 2.x csproj项目中可靠地生成C#代码?

描述

我无法使C#代码生成在.NET项目中可靠地工作。我可以得到它来构建EITHER(a)当源文件预先存在时,或者(b)当源文件预先不存在时。在两种情况下,我无法获得相同的设置。

为何如此重要:如果我在开发机器上构建,则可能以前已经构建了代码,因此我需要它来重新生成存在的源代码。但是,在构建机器上构建时,这些文件不存在,因此在这种情况下,我需要它来从头开始生成代码。

设定

复制此文件只需一个csproj和一个源文件。

这是一个引用示例的简单程序GeneratedClass:

class Program
{
    public static void Main(string[] args)
    {
        System.Console.WriteLine(GeneratedClass.MESSAGE);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我可以想到的最简单的csproj文件。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
  <Target Name="GenerateCode" BeforeTargets="CoreCompile">

    <!-- Removing the source code beforehand makes no difference
    <Exec Command="rm $(ProjectDir)Generated/*.cs" IgnoreExitCode="true" />
    -->

    <Exec Command="echo 'class GeneratedClass { public static int MESSAGE = 1; }' > Generated/GeneratedClass.cs" />

    <!-- Toggling this setting will cause failures in some scenarios and success in others
    <ItemGroup>
      <Compile Include="Generated/*$(DefaultLanguageSourceExtension)" />
    </ItemGroup> -->

  </Target> …
Run Code Online (Sandbox Code Playgroud)

c# code-generation csproj .net-core

5
推荐指数
1
解决办法
995
查看次数