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 に答える