3

T4 を使用していくつかのエンティティ クラスを生成しましたが、作成するのを忘れていましたSerializable。それで、すべてのクラスに属性をT4追加するようなものを使用する解決策はありますか?Serializable

4

2 に答える 2

1

それらの生成されたクラスは部分クラスですか? その場合は、別の T4 テンプレートを使用して、Serializable 属性で装飾された部分クラス定義を生成します。

それ以外の場合は、Visual Studio CodeModelを使用して、別の T4 テンプレート内でこの実装を必要とするすべてのクラスを識別し、この T4 テンプレートに必要なコード フラグメントを追加さ​​せることができます。

tangible の T4 Editorを使用している場合は、無料の Template Gallery が付属しています。私が知る限り、「Add NotifyPropertyChanged」というテンプレートがあり、探していることのほとんどを実行します。Solution 内のコード クラスを検出し、それらを実装します。特定のインターフェイス。それを簡単に適応させて、目的の機能を得ることができます。

それが役立つことを願っています。

于 2013-08-21T07:36:20.420 に答える
1

生成されたクラスを既に変更している場合は、変更が必要なクラスを見つけるために、Visual Studio のグローバル置換を派手な正規表現で行う方が簡単だと思うかもしれません。(それが不可能な場合でも、ファイルを処理する簡単なコンソール アプリケーションを作成することは難しくありません)。

T4 を使用すると、たとえばT4 Toolboxに付属の を使用して、どのファイルを上書きするかを制御できます。Output.PreserveExistingFile

<#
  var t = new SampleTemplate();
  t.Output.File = "Sample.cs";
  t.Output.PreserveExistingFile = true;
  t.Render();
#>

そして、再作成したい特定のファイルを削除できます。ただし、上書きするファイルをどのように決定しても、最後の再生成以降に行ったファイルへの変更はすべて失われます。1 つの推奨事項は、テンプレートを部分クラスとして構築して、すべての手動変更を別のファイルに入れることです (ただし、生成されたクラスを既に変更している場合、これはあまり役に立ちません)。

于 2013-08-21T08:36:36.573 に答える