私がやろうとしていること
T4 を使用してメール メッセージ テンプレートを作成しようとしています。
私は前処理されたテンプレートMicrosoft.VisualStudio.TextTemplating
を使用しています。これは、アセンブリへの依存関係を導入せずに実行時にメッセージを生成したい場合に、正しく理解している場合に必要なことです。
テンプレートにデータを渡したいので、パラメータを追加しました。
<#@ template language="C#" #>
<#@ parameter name="Param1" type="System.String" #>
<#@ parameter name="Param2" type="System.
Lorem <#= Param1 #> dolor <#= Param2 #>
次に、次のような引数を渡すメッセージを生成できます。
static void Main(string[] args) {
var template = new LoremIpsum();
template.Session = new Dictionary<string, object>() {
{"Param1", "ipsum"},
{"Param2", "sit amet"},
};
template.Initialize();
string text = template.TransformText();
}
何が問題ですか
これらのクラスをいくつか生成する必要があるため、すべてのクラスに、次のようなメールを送信するための共通のメソッドを持たせたいと考えています。
public void SendMail(string to, IDictionary<string, object> parameters)
または、さらに良い:
public void SendMail(string to, string Param1, string Param2)
生成されたクラスは部分的であるため、別の部分クラス宣言を追加してメソッドを追加することは可能ですが、これは、生成されたすべてのクラスに対して (多かれ少なかれ) 同じコードを繰り返さなければならないことを意味します。
これまでに試したこと
基本クラスを作成しようとしましたが、これを実行しようとすると:
<#@ template language="C#" inherits="MailTemplateBase" #>
次に、生成されたクラスがいくつかのヘルパー メソッドを定義した基本クラスに依存していたため、生成されたコードが壊れLoremIpsumBase
ます (そして、生成された各クラスがほぼ同一であるが異なる基本クラスから継承されても意味がありません)。
質問
- テンプレートの基本クラスを作成するにはどうすればよいですか?
- テンプレートで宣言されているものと同じパラメーターを受け入れるメソッドを生成するにはどうすればよいですか?