标签: code-generation

你还在使用UML吗?怎么样?做什么的?

几年前,我们店里的每个人都对UML疯狂.现在每个人似乎已经冷静下来了.

如果在软件项目中仍然广泛使用UML,我很好奇.

如果是这样,这种用法仅限于白板吗?你用它来做文件吗?您是否使用工具从中生成代码?

有关:

UML实用吗?

documentation uml code-generation

46
推荐指数
4
解决办法
2万
查看次数

'CompanyName.Foo'是'命名空间',但用作'类型'

重述问题

我正在复活这个问题,因为我今天刚刚再次遇到这个错误,我仍然完全混淆为什么C#编译器无法检查命名空间和类型中的类型之间的冲突,因为命名空间不存在.

如果我有...

public Foo MyFoo { get; set; }
Run Code Online (Sandbox Code Playgroud)

...为什么编译器会关心Foo命名空间和类型?您可以将属性声明为命名空间而不是类型吗?

"名称空间使用类似"编译器错误背后的逻辑是什么?这有什么问题可以拯救我?

[我如何标记Eric Lippert?:)]


原始问题


问题

我有一个带有默认命名空间的项目"Foo" CompanyName.Foo.我有一个名为"Foo"的数据库.

当我在数据库上运行SqlMetal.exe时,它会生成一个类CompanyName.Foo.Models.Foo.

然后,当我尝试使用此类作为类型创建属性时,像这样......

using CompanyName.Foo.Models;
...
public Foo DataContext { get; set; }
Run Code Online (Sandbox Code Playgroud)

......我收到错误:

'CompanyName.Foo'是'命名空间',但用作'类型'.

我被迫做...

public CompanyName.Foo.Models.Foo Foo { get; set; } // :-(
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 为什么会出现此错误?我的财产声明不包含CompanyName,为什么这是一个问题?简单地说:Foo != CompanyName.Foo.另外,为了确保,我搜索了我的整个解决方案,namespace Foo并提出了零命中(如果我实际使用了命名空间Foo,我可以理解得到错误).

  2. [回答]Foo每次我想使用它时,有没有办法完全符合条件?

  3. [回答]有没有办法让SqlMetal将类命名为Foo(不用更改我的数据库名称)?我可以使用开关更改命名空间,但我不知道如何更改实际的类名.

更新

仍在寻求(1)的答案.

OKW钉(2)和(3).

Usings

我的所有using陈述都提出了要求:

using System;
using System.ComponentModel;
using System.Data.Linq; …
Run Code Online (Sandbox Code Playgroud)

c# compiler-construction code-generation namespaces linq-to-sql

45
推荐指数
3
解决办法
6万
查看次数

Web应用程序的GetEntryAssembly

Assembly.GetEntryAssembly()不适用于Web应用程序.

但是......我真的需要这样的东西.我使用了一些在Web和非Web应用程序中使用的深层嵌套代码.

我目前的解决方案是浏览StackTrace以找到第一个被调用的程序集.

/// <summary>
/// Version of 'GetEntryAssembly' that works with web applications
/// </summary>
/// <returns>The entry assembly, or the first called assembly in a web application</returns>
public static Assembly GetEntyAssembly()
{
    // get the entry assembly
    var result = Assembly.GetEntryAssembly();

    // if none (ex: web application)
    if (result == null)
    {
        // current method
        MethodBase methodCurrent = null;
        // number of frames to skip
        int framestoSkip = 1;


        // loop until we cannot got further in …
Run Code Online (Sandbox Code Playgroud)

c# reflection code-generation assemblies stack-frame

45
推荐指数
2
解决办法
2万
查看次数

使用Entity Framework模型在项目的不同项目中生成POCO类

我正在尝试使用VS2010使用EF4的存储库模式.

为此,我通过右键单击实体模型设计器并单击添加代码生成项来使用POCO代码生成.然后我选择POCO模板并获取我的课程.

我希望能够做的是将我的解决方案结构化为Entity(POCO)类的单独项目以及实体模型和存储库代码的另一个项目.

这意味着我的MVC项目可以将POCO类用于强类型视图等,而不必知道存储库或必须引用它.

要将它们全部插入,我将有另一个带接口的独立项目并使用IoC.

听起来不错我只是不知道如何将类生成到自己的项目中!我可以复制它们,然后更改它们的名称空间,但我想在每次更改数据库中的模式并希望更新我的模型时避免手动工作.

谢谢

.net code-generation entity-framework poco repository-pattern

44
推荐指数
2
解决办法
2万
查看次数

如何将对象序列化为C#对象初始化程序代码?

我正在寻找一个内存中的对象(或对象的JSON序列化)并发出C#代码来生成一个等效的对象.

这对于从存储库中提取已知良好的示例以用作单元测试中的起点非常有用.我们已经考虑过反序列化JSON,但C#代码在重构方面会有优势.

c# unit-testing code-generation

40
推荐指数
6
解决办法
5077
查看次数

如何在没有命令行的Web服务器的情况下执行ruby模板文件(ERB)?

我需要ERB(Ruby的模板系统)来模板化非HTML文件.
(相反,我想将它用于源文件,如.java,.cs,...)

如何从命令行"执行" Ruby模板?

ruby code-generation template-engine erb

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

如何查看gcc(任何风格)编译器为C/C++程序生成的汇编代码?

我正在尝试优化大量的乘法和指针算术,并希望看到编译器在我放入优化标志时所做的事情.

- 编辑 -

如何将其限制为特定功能或代码块?

--Edit_2--

如何让gcc生成一个不那么详细的汇编代码?

c c++ assembly code-generation

37
推荐指数
3
解决办法
2万
查看次数

是否有一个简单的小型语言编译器

我正在寻找一个简单的编译器来编译一个简单的语言,我需要它来写一篇关于它的论文并了解编译器是如何工作的,我不是在寻找一个复杂的东西只是一个简单的语言(简单来说,我的意思是一个小代码,因为例如gcc太大了).任何帮助表示赞赏.

compiler-construction parsing code-generation lexical-analysis

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

有没有办法在基本的T4模板中有功能?

通过基本的 T4模板,我的意思是不使用T4 Toolkit或任何加载项.

我的T4有点复杂,但我现在想保持自足.有没有办法在T4模板中有功能而不引用外部组件?

.net t4 code-generation

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

在使用vim创建新文件时,如何自动添加一些框架代码

使用vim创建新文件时,我想自动添加一些框架代码.

例如,在创建新的xml文件时,我想添加第一行:

  <?xml version="1.0"?>
Run Code Online (Sandbox Code Playgroud)

或者在创建html文件时,我想添加:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title></title>
  </head>
  <body>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

vim code-generation

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