データ アクセス レイヤー (DAL) について尋ねているように思えます。
この種のレイヤーは、物理的に (異なるアセンブリ内で) または論理的に (同じアセンブリ内で異なる名前空間内で) 分離されたレイヤーをアプリケーションに組み込み、アプリケーションの残りの部分からデータのソースを抽象化することができます。このデータ ソースは、データベース、外部テキスト ファイル、または単にハードコードされたデータの場合があります。
次の例を検討してください。
public class Product
{
public int Id { get; set; }
}
public class ProductsDAL
{
public static IEnumerable<Product> GetProducts()
{
return new List<Product>(new Product[]
{
new Product() { Id = 1 },
new Product() { Id = 2 }
});
}
}
上記の例では、ProductsDAL クラスは、その情報を取得するためにそれを呼び出したオブジェクトから離れたところからデータが取得された抽象化を処理します。ほとんどの DAL クラスには、アクセスに使用されるオブジェクトを作成、読み取り、更新、および削除するためのメソッドがあります (一般に CRUD と呼ばれます)。
public class MyForm : Form
{
private IEnumerable<Product> products;
private void MyForm_Load(object sender, EventArgs e)
{
this.products = ProductsDAL.GetProducts();
}
}
DAL クラスを使用すると、使用しているソースから製品を取得し、その情報をフォームにロードするように要求できます。入手した情報をどうするかは、完全にあなた次第です。利用可能な製品を反復処理して、シナリオで必要となるものは何でも、それらをコンボ ボックスやグリッドに読み込むことができます。
このアプローチを使用すると、データのソースを置き換えることができます。たとえば、私の例のハードコードされたリストから、後でデータをプルするためにデータベースやいくつかのテーブルにアクセスすることができます。その場合、ProductsDAL.GetProducts メソッドのハードコードされたリストをデータベース呼び出しに置き換えるだけです。