我们的T4模板都有一个共同的基类(<#@ template language="C#" inherits="MySpecialBaseForT4s"...
)。我们为该基类添加了一个WriteBinary(byte[] data)
受保护的方法,从而允许我们的T4模板生成一个zip文件并将其传递给调用CompiledTemplate.Process()
方法的系统部分。
public abstract class MySpecialBaseForT4s: TextTransformation
{
protected void WriteBinary(byte[] binaryData)
{
string base64EncodedZip = Convert.ToBase64String(binaryData);
Write(BASE64_HEADER);
Write(base64EncodedZip);
}
public const string BASE64_HEADER = "Content-Transfer-Encoding: base64\n";
}
它调用CompiledTemplate.Process()
逻辑查找所生成的字符串中的已知的报头,并接通串回一个字节数组写入到磁盘。
string content = myTemplate.Process();
if (content.Trim().StartsWith(MySpecialBaseForT4s.BASE64_HEADER))
{
string contentWithoutBase64Hdr = content.Trim().Replace(MySpecialBaseForT4s.BASE64_HEADER, "");
byte[] binaryContent = Convert.FromBase64String(contentWithoutBase64Hdr);
File.WriteAllBytes(filenameAndExtension, binaryContent);
}
这有帮助吗?
来源
2012-08-30 12:36:34
gap