私は、TextReaderを使用するプライベートFilterサブクラスを作成する道を歩み始めました(基本的に、NAntソース内にPhysicalTextReaderを再作成します)。しかし、実際には、フィルターチェーンを介してファイルを読み取るはるかに簡単な方法があることに気付きました。
[TaskName("mytask")]
public class MyTask : Task
{
/// <summary>
/// Chain of filters used to alter the input file's content as it is read.
/// </summary>
[BuildElement("filterchain")]
public FilterChain Filters { get; set; }
/// <summary>
/// The input file.
/// </summary>
[TaskAttribute("input")]
public FileInfo InputFile { get; set; }
protected override void ExecuteTask()
{
Log(FileUtils.ReadFile(InputFile.FullName, Filters, null));
}
}
次に、これを期待どおりに使用できます。
<mytask input="foo.txt">
<filterchain>
<expandproperties />
</filterchain>
</mytask>