4

我有一个生成代码中的构造函数。我不想更改生成的代码(因为重新生成时它会被覆盖),但我需要向构造函数添加一些功能。

这是一些示例代码:

// Generated file
public partial class MyGeneratedClass
{
   public MyGeneratedClass() 
   {
      Does some generated stuff
   }
}

我能想出的唯一解决方案是:

// My hand made file
public partial class MyGeneratedClass
{
   public MyGeneratedClass(bool useOtherConstructor):this()
   {
      do my added functinallity
   }
}

我相当确定这会起作用,但是我的构造函数有一个蹩脚的未使用参数,我必须全部更改它们。有没有更好的办法?如果不是那很好,但我想我会问。

4

3 回答 3

2

如果您使用 C# 3 并且可以更改生成器,则可以使用部分方法

// MyGeneratedClass.Generated.cs
public partial class MyGeneratedClass
{
   public MyGeneratedClass() 
   {
      // Does some generated stuff
      OnConstructorEnd();
   }

   partial void OnConstructorEnd();
}

// MyGeneratedClass.cs
public partial class MyGeneratedClass
{
   partial void OnConstructorEnd()
   {
      // Do stuff here
   }
}
于 2010-05-03T16:36:48.213 回答
1

您的环境是否允许您从 MyGeneratedClass 继承而不是将其作为部分类。然后你可以覆盖构造函数?

于 2010-05-03T16:38:05.260 回答
1

假设您无法更改生成器输出,不幸的是,您的选择有点有限,考虑到您正在寻找的内容并不理想。他们是:

  • 从生成的类继承。子类将隐式调用父类的构造函数。
  • 使用静态方法作为初始化器
于 2010-05-03T16:39:03.083 回答