【问题标题】:Using autogenerated code without pregenerating?使用自动生成的代码而不预生成?
【发布时间】:2011-08-30 09:23:44
【问题描述】:

是否可以在生成的同一运行中使用自动生成的类?我正在尝试实现一些可用作工厂但适用于自动生成的类的东西。我的场景是这样的:

我有一些文件指定了一些结果文件可以包含什么。然后应该使用这些结果文件来计算统计数据或其他东西。现在我想在读取这些数据时修改数据,但由于软件不知道将哪些部分写入文件,它不知道如何在内部将数据保存在文件中。我有一个读者和作家(由一个朋友制作,非常流行,使用起来太麻烦了)。我想我可以使用定义来自动生成类/结构。

例如: 可以写的类是“A”、“B”和“C”。假设“A”和“B”分别有两个和三个孩子。让我们称这些为 A0、A1、B0、B1、B2。

现在在软件内部,我想写:

A aObject = new A0();
aObject.variable1 = 2;
aObject.variable2 = "something";

B bObject = new B1();
bObject.SomeVariable = 42;
bObject.SomeOtherVariable = "someValue";

变量叫什么,数据代表什么类型写在规范文件中。例如,在 xml 中,它会是这样的:

<A0>
<Variable>
   <Name>variable1</Name>
   <type>int</type>
</Variable>
<Variable>
   <Name>variable2 </Name>
   <type>string</type>
</Variable>
</A0>

(与A1、B0、B1、B2等相同)

现在,我想读取一个结果文件,意识到我必须自动生成 A0,生成它,修改数据(使用刚刚创建的类/结构 A0),然后再次写入文件。

我的解决方案是预先生成所有可能的类/结构并包含它们。问题在于 A、B 和 C 的版本正在或将要发生变化。

感谢所有帮助:)

【问题讨论】:

  • 哦,对了,在 pseydocode 中它看起来像这样: Generator.generate(A0,A0specification);包括投影(不知何故); A0.somevariable = "某事";我知道这将意味着编译错误,因为 A0 在编译时不存在。只是问;D

标签: c# visual-studio auto-generate


【解决方案1】:

说实话,你的问题的其余部分对我来说没有多大意义,但要回答你的第一个问题:是的,你可以这样做。例如,看看here

问候格特-扬

【讨论】:

  • 这正是我想要的,呵呵。对不起我奇怪的定义问题。谢谢! :D
  • 另外,我的小费。该线程非常专业 CodeDom。根据我的个人经验,我发现从模板生成 C# 代码并进行编译要容易得多。如果您这样做,您可以像往常一样编写代码,对其进行调试,然后将其分割成模板,以便在代码生成器中使用它。比其他方法抽象得多。只是我的 2 美分,祝你好运!
猜你喜欢
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 2010-12-29
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多