我正在使用 c# 开发一个 monodroid 应用程序,并尝试利用 Generic Repository 以一致的方式访问我的本地 SQLite DB 和远程 REST WS。
由于 SQLiteDataReader 实现了 IDataReader,我想知道是否有办法以相同的方式(使用 IDataReader)访问从 Web-Api MVC4 REST Web 服务器返回的有效负载。这不是 ADO.NET 的重点吗?
目前,WS 返回序列化的 JSON,但是如果需要支持 IDataReader,我可以更改它。
此外,关于如何使用 SQLite DB 和 REST WS 使通用存储库工作(在 MonoDroid 范围内)的任何其他建议都会很棒。
这是一些代码...
public interface IDataMapper<T>
{
T Map(IDataReader reader);
}
public interface IRepository<T>
{
List<T> Read(ICond cond);
T FindOne(ICond cond);
}
public class RepositorySQL<T> : IRepository<T>
{
private AndroidDB _dbLayer;
private IDataMapper<T> _dataMapper;
public RepositorySQL(IDataMapper<T> dataMapper)
{
_dbLayer = new AndroidDB();
_dataMapper = dataMapper;
}
public List<T> Read(ICond cond) {...}
public T FindOne(ICond cond) {...}
}
public class RepositoryREST<T> : IRepository<T>
{
private WSBuffer<T> _wsBuffer;
private IDataMapper<T> _dataMapper;
public RepositoryREST(IDataMapper<T> dataMapper)
{
_wsBuffer = new WSBuffer<T>();
_dataMapper = dataMapper;
}
public List<T> Read(ICond cond) {...}
public T FindOne(ICond cond) {...}
}
我在想也许可以实现一些 ADO 接口(如 IDataReader)并将反序列化的结果集包装在实现类中?
我真的真的很想要一致性!感谢您的帮助,你们总是很棒。