2009-06-09 11 views
0

企業計量を表示するダッシュボードを設計しています(現在はC#でASP.net 3.5を使用しています)。デザインに関するアドバイスを探しています。私はWebアプリケーションでOOPに慣れていません。データベースクエリを使用した多態性

多対多の関係で、さまざまなユーザーが見ることができるさまざまなメトリックが存在することがあります。私は、ローカルのSQLデータベースにユーザーを格納しています。もちろん、各「メトリック」のメタデータも格納するのが理にかなっています。これはまた、それぞれに一種のアクセス制御リストを提供します。各メトリックには、異なるデザイン(棒、柱、パイ、線、または異なるy軸上の異なるシリーズのものなど)を持ついくつかの異なるチャートがあります。

これらのチャートは、プログラムによって設計された後、実行時にASP.netページに追加される可能性があります。それは空のチャートのスーパークラスの継承構造とそれを拡張する異なるチャートタイプを持つのが良いでしょう。

このページでは、特定のユーザーが表示してそれらを生成する権利を持つチャートを選択します。それでも、データベースで選択された情報に基づいて適切なサブクラスをインスタンス化するためのルックアップテーブルとして、大きなswitch文を使用しています。

もっと芸術的な方法がありますか?何らかの形で型宣言を実行時に提供していますか?グラフのスタイル情報をすべてデータベースに移動し、系列、データポイント、色などのテーブルと列を追加する必要があります。ここでは、単一のチャートクラスがすべての必要なクエリを実行し、チャートを作成します。ありがとう。

答えて

1

動的クラスの読み込みで解決できると私は気付いていました。 Michael ClarkeのC#hereに動的クラスローディングの素晴らしい例があります。

基本的に、クエリからの文字列ファイル名に基づいてクラスをロードできます。

0

クラスのStrong名をDBに格納して、単にそのクラスのインスタンスを作成することができます。

だからではなく、その棒グラフは、あなたが個人的に私はそれがその抽象化の層を提供してちょうどかかわらず、チャートタイプを格納する、あまりにも怖がっではないでしょう

YourNamespace.UI.Charts.Bar 

のようなものを保存するかもしれないことをソート役に立つかもしれません。