我有四个查找表(现在只读)我需要一个模式在我的代码中使用这个表。 我像这样实现了Repository Pattern:
public interface ICellRepository
{
IEnumerable<CellLookup> GetCells();
}
public class CsvCellRepository
: ICellRepository
{
private readonly string _file;
public CsvCellRepository(string file)
{
_file = file;
}
#region Implementation of ICellRepository
public IEnumerable<CellLookup> GetCells()
{
if (string.IsNullOrEmpty(_file) || File.Exists(_file) == false)
{
throw new FileNotFoundException(string.Format("File not found:{0}", _file));
}
return File.ReadLines(_file)
.Skip(1) // skip header
.Select(s =>
{
var values = s.Split(',');
return new CellLookup
{
RncName = values[0],
RncId = int.Parse(values[1]),
NodeBId = string.IsNullOrEmpty(values[2]) == false ? int.Parse(values[2]) : 0,
CellName = values[3],
CellId = int.Parse(values[4]),
Psc = int.Parse(values[5])
};
});
}
#endregion
}
这个实现解决了我的问题但是当我需要从数据库,WCF,从缓存或外部源读取查找时,我应该使用哪种模式?当我从IoC容器更改查找源时,代码无需进行任何更改。