我正在使用c#中的monodroid应用程序,并试图利用Generic Repository以一致的方式访问我的本地SQLite数据库和远程REST WS。
由于SQLiteDataReader实现了IDataReader,我想知道是否有办法以相同的方式访问从Web-Api MVC4 REST Web服务器返回的有效负载(使用IDataReader)。这不是ADO.NET的重点吗?
目前,WS返回序列化的JSON,但是如果需要支持IDataReader,我可以更改它。
此外,关于如何使用SQLite DB和REST WS使Generic Repository工作(在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)和 将反序列化的结果集包装在实现类中?
我真的非常想要一致性!谢谢你的帮助,你们总是很棒。