0

我正在使用 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)并将反序列化的结果集包装在实现类中?

我真的真的很想要一致性!感谢您的帮助,你们总是很棒。

4

0 回答 0