私が開発しているアプリケーションでは、ユーザーがパーソナライズする必要がある多くの設定が表示されます。以下は、それがどのように実装されるべきだと思うかを説明しています。
好み:
public enum Weighting { One, Two, Three, Four, Five,
Six, Seven, Eight, Nine, Ten }
public class PreferenceOption
{
public bool PreferenceOptionSelected { get; set; }
public Weighting Weighting { get; set; }
}
PreferenceOptionSelected はおそらく bool です。選択されている場合、ユーザーは重み付けを追加できます。選択されていない場合、重み付けは適用されませんが、アプリケーションはその値が false であることを認識する必要があります。これは、後で検索を容易にするためです。
利用可能なすべての設定を保持するクラス:
public class PreferenceOptions
{
public PreferenceOption WantsHouse = new PreferenceOption()
{ PreferenceOptionSelected = false, Weighting = Weighting.One };
// ... could be up to 15/20 options
}
ユーザーが選択した/個人的な設定を保持するクラス:
public class UserPreferences
{
public List<PreferenceOptions> UserPreferences { get; set; }
}
質問:
この設計は、この種のシナリオにアプローチするための最良の方法ですか?
私はEFコードファーストを使用しています。これらの 3 つのクラスは、データベース内のエンティティとして永続化する必要がありますか? または、メモリ内
PreferenceOption
にPreferenceOptions
のみ存在し、の最終的な「リスト」の取得を容易にするために使用できますUserPreferences
。ここが頭から離れない部分です。ユーザーの設定を保存するにはどうすればよいですか? テーブルメイクはどうする?ユーザーの設定を保存する方法について最初に考えたのはリストでしたが、完全なリストは連続して保存できないことはわかっていますが、XML にシリアル化すれば可能です。検索を容易にするために、後でユーザーの設定が重要になります。XML アプローチを使用した場合、検索前の逆シリアル化は非効率的であり、パフォーマンスのオーバーヘッドが発生します。私が考えているものへのより良いアプローチはありますか?