【问题标题】:C# code generation / removing redundant codeC# 代码生成/删除冗余代码
【发布时间】:2010-11-13 12:55:20
【问题描述】:

我在一个类中有一些简单的代码:

private ITemplate _content1 = null;
[TemplateContainer(typeof(ContentContainer))]
public ITemplate Content1
{
    get
    { return _content1; }
    set
    { _content1 = value; }
}

我需要大约 15 个这样的内容容器。我可以复制并粘贴此块 15 次并更改数字,但必须有更好的方法。谁能建议一种更清洁的方法来做到这一点?

【问题讨论】:

  • 能否让 Content1 包含 ITemplate 项?
  • 不清楚您要做什么 - 是否有机会为问题添加一些上下文?

标签: c# templates code-generation


【解决方案1】:

试试这个:

[TemplateContainer(typeof(ContentContainer))]
public ITemplate Content1
{ get; set; }

【讨论】:

  • 请注意,这仅适用于 C# 3。
  • 我正在使用 C# 2.0,这对我有用。我仔细检查了我的项目属性,它肯定使用的是 2.0。您确定 3.0 的要求吗?
  • 2.0 .Net 项目!= C# 2.0。如果它编译你很好。
  • 既疯狂又令人敬畏。它有效,所以我会使用它 - 每个属性我可以处理 2 行。谢谢!
  • 这是VS2008编译器的一个特性。无论目标框架如何,您都可以获得这些功能。
【解决方案2】:

有一个属性(prop)片段(sn-ps 是 Visual Studio 原生的)。

要么修改 sn-p(它是一个简单的 xml 文件),要么为您的任务创建一个新的。

ReSharper 有一种更简单的方法,称为代码模板。

或者,使用 t4 脚本生成您需要的属性。但这可能是矫枉过正。

【讨论】:

    【解决方案3】:

    为什么不使用容器集合,例如 List?似乎您唯一要更改的是整数索引,使用 List 是有意义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多