私は c# で monodroid アプリに取り組んでおり、一貫した方法でローカル SQLite DB とリモート REST WS の両方にアクセスするために Generic Repository を利用しようとしています。
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 など) を実装し、逆シリアル化された結果セットを実装クラス内にラップすることを考えていましたか?
私は本当に本当に本当に一貫性が欲しいです!!! あなたの助けをありがとう、あなたたちはいつも素晴らしいです。