2
我在寫一個文件處理服務來解析和處理不同種類的事務文件。我有一個通用文件解析器,其中包含不同類型事務的實現,如下所示。在類中創建通用字段
public interface IFileParser<T>
{
List<T> Parse(StreamReader fileStream);
}
public MonthlyParser : IFileParser<MonthlyTransaction>
{
public List<MonthlyTransaction> Parse(StreamReader fileStream)
{
......
}
}
public DailyParser : IFileParser<DailyTransaction>
{
public List<DailyTransaction> Parse(StreamReader fileStream)
{
.....
}
}
public enum FileTypes
{
DailyTransaction,
MonthlyTransaction
}
public class FileProcessor
{
private TransactionContext dataContext;
private IFileParser<T> fileParser;
public FileProcessor(TransactionContext dbContext)
{
dataContext = dbContext;
}
public void ProcessFile(string filePath, FileType fileType)
{
// here instantiate IFileParser based on FileType.
// parse and process file.
}
}
我的問題是如何在該泛型接口的FileProcessor類中創建一個字段,其中可以分配和使用具體的實現?我也在考慮將實例化轉移到IoC。
我需要做一些額外的個人交易處理並將其保存在數據庫中。目前我使用基於fileType的ProcessFile內的具體實現的局部變量。我想看看是否可以用實例字段替換局部變量。 – Satish
@Satish:爲什麼?它真的有什麼意義在那裏有一個領域?如果你創建了一個'IFileParser',但卻被要求用錯誤的'FileType'解析一個文件呢?那麼,如果你這樣做,你只需要使其通用。 –
我想它不:)我會堅持局部變量的方法。謝謝。 – Satish