در حقیقت کاری که میخوای انجام بدی، ایجاد یک Custom Provider هست که برای اینکار در دات نت از Interface ها استفاده میشه.
روش تمیز این کار بدین گونه است که یک متد عمومی برای تمامی Provider ها تعریف می کنی و برای استفاده از این متد، Provider مخصوص خودش رو فراخوانی میکنی.
در ذیل، یک تکه کد ساده برای بازیابی داده ها از جدول myTable که با استفاده از Interface ها پیاده سازی شده میبینی:
private void GetData(IDbConnection Cnn, IDbDataAdapter DA)
{
IDbCommand Cmd = Cnn.CreateCommand();
Cmd.CommandText = "SELECT * FROM myTable";
DA.SelectCommand = Cmd;
DataSet DS = new DataSet();
DA.Fill(DS, "myTable");
GridView.DataSource = DS.Tables["myTable"].DefaultView;
GridView.DataBind();
}
در روال فوق نوع Provider مشخص نشده.
فرض کن که من قصد دارم از روال فوق برای بازیابی داده ها از یک دیتابیس SQL Server استفاده کنم.
به شکل زیر عمل میکنم:
SqlConnection Cnn = new SqlConnection("myConnectionString");
SqlDataAdapter DA = new SqlDataAdapter();
GetData(Cnn, DA);
و یا برای اتصال به یک دیتابیس از نوع OLEDB:
OleDbConnection Cnn = new OleDbConnection("myConnectionString");
OleDbDataAdapter DA = new OleDbDataAdapter();
GetData(Cnn, DA);
پس دیدی که این کار با استفاده از Interface ها در دات نت به راحتی امکان پذیر هست.
موفق باشید.