2009-03-10 10 views
1

にデータベースエントリからユーザーコントロールを読み込む、Windowsはアプリを形成して、我々はデータベースにメニューエントリレコードに関連付けられているユーザーコントロールのシリーズを持っている...動的にC#ではC#の

ID Menu Title 
    1 User Management 
    4 Group Management 
    6 System Utilities 
    12 Configuration Management 

少数のユーザーコントロール...

  • UserManagement.cs
  • GroupManager.cs
  • SysUtil.cs
  • Configur ationMan.cs

私たちは現在IDをオンにしていますが、これは非常に基本的な方法ですが、ハードコードされたIDがたくさんあります。

データベースエントリを読み込み、適切なユーザーコントロールを読み込む最も適切な方法は何ですか?

ありがとうございます!

答えて

1

クラス名をデータベースに格納し、リフレクションによってインスタンス化することができます。彼らはすべてのインターフェイスを実装する必要がありますか、すべての異なるクラスを処理することなく対処するためにベースクラス(私はあなたがやっていると仮定して、コントロールを拡張している)から派生する必要があります。

+0

ありがとうございます!私はこれが事実かもしれないと思ったが、チェックしたかった。 – 80bower

2

いくつかの点では、スイッチ(おそらく単なるidではなくenum)はかなり合理的です。アセンブリに修飾された名前をDBにプッシュできますが、DBはアセンブリやクラスについて何を気にしていますか?あなたがリファクタリングするとどうなりますか? javaに移動しますか?複数のUIエンジンをサポートする必要がありますか?いや、私はおそらく自分自身を切り替えたい - ファクトリメソッドでそれをカプセル化する...

public static Control CreateControl(ControlType controlType) { 
    switch(controlType) { 
     case ControlType.Foo: 
      return new blah... 
     case ControlType.Bar: 
      ... 
    } 
    throw new ArgumentOutOfRangeException(); 
} 
0

をあなたはおそらく、データベース内の型名を保存し、セットアップ新しいユーザーコントロールにリフレクションを使用することができます。