C# - 添加到现有(生成的)构造函数

时间:2010-05-03 16:35:04

标签: c# constructor multiple-constructors

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

以下是一些示例代码:

// 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
   }
}

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

3 个答案:

答案 0 :(得分:2)

如果您使用的是C#3并且可以更改生成器,则可以使用partial methods

// 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
   }
}

答案 1 :(得分:1)

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

答案 2 :(得分:1)

假设你不能改变发电机输出,不幸的是,你的选择有点受限,考虑到你正在寻找的东西并不理想。他们是:

  • 从生成的类继承。子类将隐式调用父级的construtor。
  • 使用静态方法作为初始化程序